pike.git / src / modules / Gz / module.pmod.in

version» Context lines:

pike.git/src/modules/Gz/module.pmod.in:1: - // $Id: module.pmod.in,v 1.2 2002/11/24 21:58:24 agehall Exp $ + // $Id: module.pmod.in,v 1.3 2002/11/24 22:14:39 agehall Exp $   #pike __REAL_VERSION__      inherit @module@;            //! Allows the user to open a Gzip archive and read and write   //! it's contents in an uncompressed form, emulating the @[Stdio.File]   //! interface.   //! @note   //! An important limitation on this class is that it may only be used   //! for reading @b{or@} writing, not both at the same time.   //! Please also note that if you want to reopen a file for reading   //! after a write, you must close the file before calling open or   //! strange effects might be the result.   class File {    inherit @module@._file;    -  private int is_open; +  private int is_open = 0;       //! @decl void create(void|string|int file, void|string mode)    //! @param file    //! Filename or filedescriptor of the gzip file to open.    //! @param mode    //! mode for the file. Defaults to "rb".    //! @seealso    //! @[open] @[Stdio.File]    void create(mixed ... args) {    ::create();    -  if(sizeof(args)) +  if(sizeof(args)) {    open(@args);    } -  +  }    -  string _sprintf() +  string _sprintf(int t)    { -  +  switch(t) { +  case 'O':    return sprintf("Gz.File(/*%s open */)", is_open ? "" : " not"); -  +  case 't': +  return "Gz.File"; +  default: +  return "";    } -  +  }       int close()    {    is_open = 0;    return ::close();    }       void destroy() {    close();    }
pike.git/src/modules/Gz/module.pmod.in:60:    //! write mode    //! @item ab    //! append mode    //! @enddl    //! For the wb and ab mode, additional parameters may    //! be specified. Please se zlib manual for more info.    //! @returns    //! non-zero if successful.    int open(string|int file, void|string mode) {    string open_mode="rb"; -  -  if (is_open) +  if (is_open) {    ::close(); -  +  }       if (stringp(mode)) {    open_mode = lower_case(mode);    }       is_open = ::open(file, open_mode);    return is_open;    }       //! Reads data from the file.    //! If no argument is given, the whole file is read.    int|string read(void|int length) {    string ret = "";    -  if (!is_open) +  if (!is_open) {    return 0; -  +  }       if (!zero_type(length))    return ::read(length);    else    while(!eof()) {    ret += ::read(1024*64);    }    return ret;    }   }