File: str.h

package info (click to toggle)
prayer 1.3.5-dfsg1-8
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 6,596 kB
  • sloc: ansic: 43,163; makefile: 817; sh: 445; perl: 166
file content (48 lines) | stat: -rw-r--r-- 1,575 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/* $Cambridge: hermes/src/prayer/lib/str.h,v 1.3 2008/09/16 09:59:57 dpc22 Exp $ */

/************************************************
 *    Prayer - a Webmail Interface              *
 ************************************************/

/* Copyright (c) University of Cambridge 2000 - 2008 */
/* See the file NOTICE for conditions of use and distribution. */

struct str {
    struct str *next;
    unsigned char *s;
    unsigned long len;
    unsigned long alloc;
};

#define PREFERRED_STR_BLOCK_SIZE (32)

struct str *str_create(struct pool *p, unsigned long blocksize);
void *str_reserve(struct str *str, unsigned long size);

void str_free(struct str *str);
void str_free_chain(struct str *str);

void str_putchar(struct str *str, unsigned char c);
void str_vaprintf(struct str *str, char *format, va_list ap);
void str_printf(struct str *str, char *format, ...);
void str_puts(struct str *str, char *string);
void str_encode_url(struct str *str, char *s);
void str_encode_canon(struct str *str, char *s);


#define str_putc(str, c)                        \
do {                                            \
  unsigned char _c = (unsigned char)c;          \
                                                \
  if (str->len < str->alloc) {                  \
      str->s[str->len++] = _c;                  \
  } else                                        \
    str_putchar(str, _c);                       \
} while (0)

/* Fetch methods */
unsigned long str_len(struct str *str);

void str_rewind(struct str *str, unsigned long offset);
void *str_fetch(struct str *s);