Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
10 | reyssat | 1 | /* Copyright (C) 1998-2003 XIAO, Gang of Universite de Nice - Sophia Antipolis |
2 | * |
||
3 | * This program is free software; you can redistribute it and/or modify |
||
4 | * it under the terms of the GNU General Public License as published by |
||
5 | * the Free Software Foundation; either version 2 of the License, or |
||
6 | * (at your option) any later version. |
||
7 | * |
||
8 | * This program is distributed in the hope that it will be useful, |
||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||
11 | * GNU General Public License for more details. |
||
12 | * |
||
13 | * You should have received a copy of the GNU General Public License |
||
14 | * along with this program; if not, write to the Free Software |
||
15 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
||
16 | */ |
||
17 | |||
18 | /* WWW multipurpose server, dynamic library definitions */ |
||
19 | |||
7844 | bpr | 20 | /* errors.c */ |
10 | reyssat | 21 | void (*error1) (char *msg); |
22 | void (*error2) (char *msg); |
||
23 | void (*error3) (char *msg); |
||
24 | |||
7844 | bpr | 25 | /* lines.c */ |
10 | reyssat | 26 | char *int2str(int i); |
27 | void *xmalloc(size_t n); |
||
7844 | bpr | 28 | int msleep(int ms); /* millisecond sleeper */ |
29 | void _tolinux(char *p); /* dos/mac to unix/linux translation */ |
||
30 | void mystrncpy(char *dest, const char *src, size_t lim); /* optimized and secured strncpy */ |
||
31 | /* find matching parenthesis. |
||
32 | * The entrance point should be after the opening parenthesis. |
||
33 | * Returns NULL if unmatched< |
||
34 | */ |
||
10 | reyssat | 35 | char *find_matching(char *p, char c); |
7844 | bpr | 36 | char *find_word_start(char *p); /* Strips leading spaces */ |
37 | char *find_word_end(char *p); /* Points to the end of the word */ |
||
38 | char *strparchr(char *p, char c); /* search for char, skipping parentheses */ |
||
39 | char *strparstr(char *p, char *fnd); /* search for string, skipping parentheses */ |
||
40 | char *find_item_end(char *p); /* Points to the end of an item */ |
||
41 | char *find_line_end(char *p); /* Points to the end of a line */ |
||
10 | reyssat | 42 | char *charchr(char *p,char *w); |
7844 | bpr | 43 | char *wordchr(char *p, char *w); /* Find first occurrence of word */ |
44 | char *itemchr(char *p, char *w); /* Find first occurrence of item */ |
||
45 | char *linechr(char *p, char *w); /* Find first occurrence of line */ |
||
46 | char *varchr(char *p, char *v); /* Find first occurrence of math variable */ |
||
47 | int cutitems(char *p, char *list[], int max); /* Cut items of a string */ |
||
48 | int cutwords(char *p, char *list[], int max); /* Cut words of a string */ |
||
49 | int cutlines(char *p, char *list[], int max); /* Cut lines of a string */ |
||
50 | int cutchars(char *p, char *list[], int max); /* Cut chars of a string */ |
||
51 | char *strip_trailing_spaces(char *p); /* strip trailing spaces; return string end. */ |
||
52 | /* Verify whether a list is well-ordered. For debugging uses. |
||
53 | * Returns 0 if order is OK, -1 otherwise. |
||
54 | */ |
||
10 | reyssat | 55 | int verify_order(void *list, int items, size_t item_size); |
7844 | bpr | 56 | /* searches a list. Returns index if found, -1 if nomatch. |
57 | * Uses binary search, list must be sorted. |
||
58 | */ |
||
10 | reyssat | 59 | int search_list(void *list, int items, size_t item_size, const char *str); |
7844 | bpr | 60 | unsigned int linenum(char *p); /* Returns number of lines in string p */ |
61 | unsigned int itemnum(char *p); /* Returns number of items in the list p, comma separated */ |
||
62 | unsigned int wordnum(char *p); /* Returns number of words in string p */ |
||
63 | unsigned int charnum(char *p); /* This is just to suppress an annoying compiler warning message. */ |
||
10 | reyssat | 64 | char *fnd_line(char *p, int n, char bf[]); /* find n-th line in string p */ |
65 | char *fnd_item(char *p, int n, char bf[]); /* find n-th item in list p, comma separated */ |
||
66 | char *fnd_word(char *p, int n, char bf[]); /* find n-th word in string p */ |
||
67 | char *fnd_char(char *p, int n, char bf[]); /* find n-th char in string p */ |
||
68 | char *fnd_row(char *p, int n, char bf[]); /* find n-th row in a matrix p */ |
||
7844 | bpr | 69 | /* Separate items in the string p, end each item with 0, |
70 | * and store item pointers in parm[]. Does not parse past max. |
||
71 | * Returns the number of fields. |
||
72 | */ |
||
10 | reyssat | 73 | int separate_item(char *p, char *parm[], int max); |
74 | int separate_line(char *p, char *parm[], int max); |
||
75 | int separate_word(char *p, char *parm[], int max); |
||
76 | int _separator(char *p,char *parm[], int max, char fs); |
||
7844 | bpr | 77 | int rows2lines(char *p); /* Returns 1 if semicolons changed to new lines */ |
10 | reyssat | 78 | void lines2rows(char *p); |
79 | unsigned int rownum(char *p); |
||
7844 | bpr | 80 | void words2items(char *p); /* change words to items */ |
81 | void words2lines(char *p); /* change words to lines */ |
||
82 | void lines2items(char *p); /* change lines to items */ |
||
83 | void lines2words(char *p); /* change lines to words */ |
||
84 | void items2words(char *p); /* change items to words */ |
||
85 | void items2lines(char *p); /* change items to lines */ |
||
86 | void strip_enclosing_par(char *p); /* Strip enclosing pairs of parentheses */ |
||
87 | /* strstr but may have embedde deros. |
||
88 | * Returns memory end if not found. |
||
89 | * Supposes memory ends with 0. |
||
90 | */ |
||
10 | reyssat | 91 | char *memstr(char *s1, char *s2, int len); |
7844 | bpr | 92 | /* Check whether parentheses are balanced in a given string. |
93 | * Returns 0 if OK. |
||
94 | */ |
||
95 | /* style=0: simple check. style<>0: strong check. */ |
||
10 | reyssat | 96 | int check_parentheses(char *p, int style); |
7844 | bpr | 97 | void nospace(char *p); /* collapses all space characters in string. */ |
98 | void singlespace(char *p); /* change all spaces into ' ', and collapse multiple occurences */ |
||
99 | void deaccent(char *p); /* fold accented letters to unaccented */ |
||
100 | void reaccent(char *p); /* compose accented letters using symbols */ |
||
101 | /* modify a string. Bufferlen must be at least MAX_LINELEN */ |
||
8086 | bpr | 102 | extern void (*string_modify)(char *start, char *bad_beg, char *bad_end, char *good,...); |
10 | reyssat | 103 | long int filelength(char *fn,...); |
104 | int catfile(FILE *outf, char *fn,...); |
||
105 | char *fnd_position; |
||
106 | char *fnd_nextpos; |
||
107 | |||
108 | /* My accelerated definitions. */ |
||
109 | #define myisdigit(x) (x>='0' && x<='9') |
||
110 | #define myisalpha(x) ((x&~32)>='A' && (x&~32)<='Z') |
||
111 | #define myisalnum(x) (myisalpha(x) || myisdigit(x)) |
||
112 | #define myisupper(x) (x>='A' && x<='Z') |
||
113 | #define myislower(x) (x>='a' && x<='z') |
||
114 | #define myislspace(x) (x==' ' || x=='\t') |
||
115 | #define myisspace(x) (x==' ' || x=='\t' || x=='\n' || x=='\r') |