pike.git / lib / modules / Protocols.pmod / IMAP.pmod / parse_line.pike

version» Context lines:

pike.git/lib/modules/Protocols.pmod/IMAP.pmod/parse_line.pike:20:      void skip_whitespace()   {    sscanf(buffer, "%*[ \t]%s", buffer);   }      #if 0   int eolp()   {    skip_whitespace(); -  return !strlen(buffer); +  return !sizeof(buffer);   }   #endif      // Returns -1 on error. All valid numbers ar non-negative.   int get_number()   {    skip_whitespace();    -  if (!strlen(buffer)) +  if (!sizeof(buffer))    return -1;       int i; -  for(i = 0; i<strlen(buffer); i++) +  for(i = 0; i<sizeof(buffer); i++)    if ( (buffer[i] < '0') || ('9' < buffer[i]) )    break;       // Disallow too large numbers    if (!i || (i > 9) )    return -1;       int res = array_sscanf(buffer[..i-1], "%d")[0];    buffer = buffer[i..];    return res;
pike.git/lib/modules/Protocols.pmod/IMAP.pmod/parse_line.pike:59:       werror("get_atom: buffer = '%s'\n", buffer);       sscanf(buffer,    (with_options    ? "%*[ \t]%[^][(){ \0-\037\177%\"]%s"    : "%*[ \t]%[^(){ \0-\037\177%\"]%s"),    atom, buffer);       werror(sprintf("=> atom: %O\n", atom)); -  return strlen(atom) && atom; +  return sizeof(atom) && atom;   }      string|object get_string()   {    werror("get_string: buffer = '%s'\n", buffer);       skip_whitespace();    -  if (!strlen(buffer)) +  if (!sizeof(buffer))    return 0;       switch(buffer[0])    {    case '"':    {    int i = 0;    while(1)    {    i = search(buffer, "\"", i+1);
pike.git/lib/modules/Protocols.pmod/IMAP.pmod/parse_line.pike:93:    string res = replace(buffer[1..i-1],    ({ "\\\"", "\\\\" }),    ({ "\"", "\\" }) );    buffer = buffer[i+1..];    return res;    }    }    }    case '{':    { -  if (buffer[strlen(buffer)-1..] != "}") +  if (buffer[sizeof(buffer)-1..] != "}")    return 0; -  string n = buffer[1..strlen(buffer)-2]; +  string n = buffer[1..sizeof(buffer)-2];       buffer = "";    if ( (sizeof(values(n) - values("0123456789")))    || (sizeof(n) > 9) )    return 0;    if (!sizeof(n))    return 0;       return partial_literal(array_sscanf(n, "%d")[0]);    }    }   }      string|object get_astring()   {    werror("get_astring: buffer = '%s'\n", buffer);       skip_whitespace(); -  if (!strlen(buffer)) +  if (!sizeof(buffer))    return 0;    switch(buffer[0])    {    case '"':    case '{':    return get_string();    default:    return get_atom();    }   }
pike.git/lib/modules/Protocols.pmod/IMAP.pmod/parse_line.pike:146:   /* Parses an object that can be a string, an atom (possibly with    * options in brackets) or a list.    *    * eol can be 0, meaning no end of line or list expected,    * a positive int, meaning a character (e.g. ')' or ']' that terminates the list,    * or -1, meaning that the list terminates at end of line.    */   mapping get_token(int eol, int accept_options)   {    skip_whitespace(); -  if (!strlen(buffer)) +  if (!sizeof(buffer))    return (eol == -1) && ([ "type" : "eol", "eol" : 1 ]);       if (eol && (buffer[0] == eol))    {    buffer = buffer[1..];    return ([ "type" : "eol", "eol" : 1 ]);    }    switch(buffer[0])    {    case '(':
pike.git/lib/modules/Protocols.pmod/IMAP.pmod/parse_line.pike:181:    string atom = get_atom(accept_options);    return ([ "type" : "atom", "atom" : atom ]);    }    }    }   }      /* Reads a <start.size> suffix */   mapping get_range(mapping atom)   { -  if (!strlen(buffer) || (buffer[0] != '<')) +  if (!sizeof(buffer) || (buffer[0] != '<'))    return atom;       buffer = buffer[1..];       int start = get_number(); -  if ((start < 0) || !strlen(buffer) || (buffer[0] != '.')) +  if ((start < 0) || !sizeof(buffer) || (buffer[0] != '.'))    return 0;       buffer = buffer[1..];       int size = get_number(); -  if ((size <= 0) || !strlen(buffer) || (buffer[0] != '>')) +  if ((size <= 0) || !sizeof(buffer) || (buffer[0] != '>'))    return 0;       buffer = buffer[1..];       atom->range = ({ start, size });       return atom;   }      /* Get a list of atoms.    * Primarily intended for use by STORE for the flags argument.    */   array(string) get_flag_list()   {    skip_whitespace();    -  if (!strlen(buffer) || (buffer[0] != '(') ) +  if (!sizeof(buffer) || (buffer[0] != '(') )    return 0;       buffer = buffer[1..];    array(string) res = ({});       skip_whitespace();       string atom;    while (atom = get_atom())    {    res += ({ atom });       skip_whitespace();    }    skip_whitespace(); // This one shouldn't be needed, but...    -  if (!strlen(buffer)) +  if (!sizeof(buffer))    return 0;       if (buffer[0] = ')')    {    buffer = buffer[1..];    return res;    }       return 0;   }
pike.git/lib/modules/Protocols.pmod/IMAP.pmod/parse_line.pike:252:    * accepted, as it is a little difficult to wait for the    * continuation of the request.    *    * FIXME: This function is used to read fetch commands. This breaks    * rfc-2060 compliance, as the names of headers can be represented    * as string literals. */      mapping get_simple_list(int max_depth)   {    skip_whitespace(); -  if (!strlen(buffer)) +  if (!sizeof(buffer))    return 0;       if (buffer[0] == '(') {    /* Recurse */    if (max_depth > 0) {    array a = do_parse_simple_list(max_depth - 1, ')');    return a && ([ "type": "list",    "list": a ]);    } else {    werror("get_simple_list(): Too deep recursion.\n");
pike.git/lib/modules/Protocols.pmod/IMAP.pmod/parse_line.pike:282:    array a = ({ });       werror(sprintf("do_parse_simple_list(%d, '%c')\n", max_depth, terminator));       buffer = buffer[1..];       while(1)    {    skip_whitespace();    -  if (!strlen(buffer)) +  if (!sizeof(buffer))    return 0;       if (buffer[0] == terminator)    {    buffer = buffer[1..];    return a;    }       mapping atom = get_atom_options(max_depth-1);   
pike.git/lib/modules/Protocols.pmod/IMAP.pmod/parse_line.pike:325:    * range : ({ start, size })    */   mapping get_atom_options(int max_depth)   {    string atom = get_atom(1);    if (!atom)    return 0;       mapping res = ([ "type" : "atom",    "atom" : atom ]); -  if (!strlen(buffer) || (buffer[0] != '[')) +  if (!sizeof(buffer) || (buffer[0] != '['))    {    res->raw = atom;    return res;    }       /* Parse options */    string option_start = buffer;       array options = do_parse_simple_list(max_depth - 1, ']');   
pike.git/lib/modules/Protocols.pmod/IMAP.pmod/parse_line.pike:348:    res->raw = atom + "[]";    res->options = ({ ([ "type":"atom", "atom":"" ]) });    return res;    }       res->options = options;    res->raw = atom +    option_start[..sizeof(option_start) - sizeof(buffer) - 1];       -  if (!strlen(buffer) || (buffer[0] != '<')) +  if (!sizeof(buffer) || (buffer[0] != '<'))    return res;       /* Parse <start.size> suffix */    buffer = buffer[1..];       int start = get_number(); -  if ((start < 0) || !strlen(buffer) || (buffer[0] != '.')) +  if ((start < 0) || !sizeof(buffer) || (buffer[0] != '.'))    return 0;       buffer = buffer[1..];       int size = get_number(); -  if ((size < 0) || !strlen(buffer) || (buffer[0] != '>')) +  if ((size < 0) || !sizeof(buffer) || (buffer[0] != '>'))    return 0;       buffer = buffer[1..];       res->range = ({ start, size });       return res;   }