Rev 8659 | Rev 9090 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8659 | Rev 8863 | ||
---|---|---|---|
Line 105... | Line 105... | ||
105 | 105 | ||
106 | for(r=strstr(p,w);r!=NULL && |
106 | for(r=strstr(p,w);r!=NULL && |
107 | ( (r>p && !isspace(*(r-1))) || (!isspace(*(r+strlen(w))) && *(r+strlen(w))!=0) ); |
107 | ( (r>p && !isspace(*(r-1))) || (!isspace(*(r+strlen(w))) && *(r+strlen(w))!=0) ); |
108 | r=strstr(r+1,w)); |
108 | r=strstr(r+1,w)); |
109 | return r; |
109 | return r; |
110 | } |
- | |
111 | - | ||
112 | /* strip trailing spaces; return string end. */ |
- | |
113 | char *strip_trailing_spaces2(char *p) |
- | |
114 | { |
- | |
115 | char *pp; |
- | |
116 | if(*p==0) return p; |
- | |
117 | for(pp=p+strlen(p)-1; pp>=p && isspace(*pp); *(pp--)=0); |
- | |
118 | return pp; |
- | |
119 | } |
110 | } |
120 | 111 | ||
121 | char *find_tag_end(char *p) |
112 | char *find_tag_end(char *p) |
122 | { |
113 | { |
123 | char *pp; |
114 | char *pp; |
Line 134... | Line 125... | ||
134 | pp=strchr(pp+1,'\''); |
125 | pp=strchr(pp+1,'\''); |
135 | if(pp==NULL) return p+strlen(p); else continue; |
126 | if(pp==NULL) return p+strlen(p); else continue; |
136 | } |
127 | } |
137 | } |
128 | } |
138 | if(*pp=='>') pp++; return pp; |
129 | if(*pp=='>') pp++; return pp; |
139 | } |
130 | } |
140 | 131 | ||
141 | char *find_tag(char *p, char *tag) |
132 | char *find_tag(char *p, char *tag) |
142 | { |
133 | { |
143 | char *pp; |
134 | char *pp; |
144 | int len; |
135 | int len; |
145 | len=strlen(tag); |
136 | len=strlen(tag); |
146 | for(pp=strchr(p,'<'); pp!=NULL && *pp; pp=strchr(pp+1,'<')) { |
137 | for(pp=strchr(p,'<'); pp!=NULL && *pp; pp=strchr(pp+1,'<')) { |
147 | if(strncasecmp(pp+1,tag,len)==0 && !isalnum(*(pp+1+len))) return pp; |
138 | if(strncasecmp(pp+1,tag,len)==0 && !isalnum(*(pp+1+len))) return pp; |
148 | } |
139 | } |
149 | return p+strlen(p); |
140 | return p+strlen(p); |
150 | } |
141 | } |
151 | 142 | ||
152 | /* remove all html tags */ |
143 | /* remove all html tags */ |
153 | void detag(char *p) |
144 | void detag(char *p) |
154 | { |
145 | { |
155 | char *pp, *p2; |
146 | char *pp, *p2; |
156 | for(pp=strchr(p,'<'); pp!=NULL; pp=strchr(pp,'<')) { |
147 | for(pp=strchr(p,'<'); pp!=NULL; pp=strchr(pp,'<')) { |
157 | p2=find_tag_end(pp); |
148 | p2=find_tag_end(pp); |
158 | if(*p2==0) {*pp=0; return; } |
149 | if(*p2==0) {*pp=0; return; } |
159 | ovlstrcpy(pp,p2); |
150 | ovlstrcpy(pp,p2); |
160 | } |
151 | } |
161 | } |
- | |
162 | - | ||
163 | /* modify a string. Bufferlen must be at least MAX_LINELEN */ |
- | |
164 | void string_modify3(char *start, char *bad_beg, char *bad_end, char *good,...) |
- | |
165 | { |
- | |
166 | char buf[MAX_LINELEN+1]; |
- | |
167 | va_list vp; |
- | |
168 | - | ||
169 | va_start(vp,good); |
- | |
170 | vsnprintf(buf,sizeof(buf),good,vp); va_end(vp); |
- | |
171 | if(strlen(start)-(bad_end-bad_beg)+strlen(buf)>=MAX_LINELEN) |
- | |
172 | return; /* this is an error situation. */ |
- | |
173 | strcat(buf,bad_end); |
- | |
174 | ovlstrcpy(bad_beg,buf); |
- | |
175 | } |
152 | } |
176 | 153 | ||
177 | /* add a space after comma to see end of words */ |
154 | /* add a space after comma to see end of words */ |
178 | 155 | ||
179 | void comma(char *p) |
156 | void comma(char *p) |