35 if (
buf.buf==NULL)
return NULL;
41 str = (
char*)malloc(strlen((
const char*)pp)+3);
42 memset(str, 0, strlen((
const char*)pp)+3);
45 strncpy(str+2, pp, strlen((
const char*)pp));
48 while (str[i]!=
'\0' && str[i]!=
'\"') i++;
75 fseek(fp, 0, SEEK_SET);
82 if (!strcmp((
char*)
buf.buf, bndry)) {
108 if (mime.
buf==NULL)
break;
118 while(pt[i]!=
'\0' && pt[i]!=
'=') i++;
119 if (pt[i]==
'=') pt += i + 1;
127 if (ln==NULL) ln = lt;
158 if (bndry==NULL)
return NULL;
160 fp = fopen(fname,
"rb");
161 if (fp==NULL)
return NULL;
189 int i, j,
len, decf=0, sz;
191 if (mime==NULL)
return NULL;
193 buf = ppb = (
char*)malloc(strlen((
const char*)mime)+1);
194 if (
buf==NULL)
return NULL;
195 memcpy(
buf, mime, strlen(mime));
196 buf[strlen(mime)] =
'\0';
198 dec = ppd = (
char*)malloc(strlen((
const char*)mime)+1);
203 memset(dec, 0, strlen((
const char*)mime)+1);
205 if (ppb[0]==
'"') ppb++;
207 while(ppb[i]!=
'\0' && ppb[i]!=
'"') i++;
210 while (ppb[0]!=
'\0') {
211 str =
awk(ppb,
'?', 1);
212 len = strlen((
const char*)str);
213 if (str[
len-1]==
'=') {
216 for (i=0, j=0; i<
len; i++) {
223 str =
awk(ppb,
'?', 1);
239 str =
awk(ppb,
'?', 1);
245 if (!strcasecmp(
"B", str)) decf = 1;
246 else if (!strcasecmp(
"Q", str)) decf = 2;
257 str =
awk(ppb,
'?', 1);
263 len = strlen((
const char*)str);
264 if (ppb[
len+1]!=
'=') {
273 if (decf==1) ret = (
char*)
decode_base64((
unsigned char*)str, &sz);
281 memcpy(ppd, ret, sz);
290 for (i=0, j=0; i<
len; i++) {
318 if (mime==NULL)
return NULL;
321 if (
buf==NULL)
return NULL;
330 if (
buf==NULL)
return NULL;
331 if (strcasecmp(
"JA",
buf)) {
334 mime += strlen(
"JA") + 1;
337 buf = (
char*)malloc(strlen((
const char*)mime)+1);
338 if (
buf==NULL)
return NULL;
339 memset(
buf, 0, strlen((
const char*)mime)+1);
342 while(mime[i]!=
'\0') {
343 if (mime[i]!=
' ' && mime[i]!=
';' && mime[i]!=
CHAR_CR && mime[i]!=
CHAR_LF)
buf[j++] = mime[i];
348 if (dec!=NULL) dec[sz] =
'\0';
373 len = strlen((
const char*)mime);
374 str = (
char*)malloc(
len+1);
375 if (str==NULL)
return NULL;
376 memset(str, 0,
len+1);
379 while(mime[i]!=
'\0') {
386 buf = (
char*)malloc(
len+1);
393 if (str[0]==
'\"' && str[
len-1]==
'\"' && str[
len-2]!=
'\\') {
394 memcpy(
buf, str+1,
len-2);
412 str = (
char*)malloc(strlen(mime)+1);
414 memset(str, 0, strlen(mime)+1);
416 while(mime[i]!=
'\0') {
419 while(mime[i]!=
'\0' && mime[i]!=
'=') i++;
420 if (mime[i]==
'=') i++;
450 if (mime.
buf==NULL)
return NULL;
491 return (
char*)mime.
buf;
520 if ((pe=(
unsigned char*)strstr((
const char*)mime,
"?="))!=NULL) {
Buffer make_Buffer(int sz)
Buffer型変数のバッファ部をつくり出す.
int fgets_Buffer(Buffer *str, FILE *fp)
拡張fgets.文字列の読み込みに使用する.改行コードは削除する
void free_Buffer(Buffer *buf)
Buffer型変数のバッファ部を解放する
Buffer init_Buffer()
初期化したBuffer型変数を返す.
#define copy_s2Buffer(src, dst)
copy_b2Buffer()
#define cat_s2Buffer(src, dst)
cat_b2Buffer()
Buffer search_protocol_header(tList *list, char *key, int no)
Buffer search_protocol_header_value(tList *list, char *key, char *data, int no)
tList * get_protocol_header_list_seq(tList *lp, Buffer buf, char deli, int fstline, int rcntnt)
unsigned char * buf
バッファの先頭へのポインタ.str[bufsz]は必ず 0x00となる.
void del_all_tList(tList **pp)
リストの全ノードの削除.ポインタ ppのノードを含むリスト全体を削除する.
tList * find_tList_top(tList *pl)
リストの最初のノードを探す.
#define add_tList_node_str(p, k, v)
add_tList_node_bystr()