#include <stdio.h>
#include <stdlib.h>
//宣言
int GetBoundary( char **reBou );
int GetEXTinHeader( char **reEXT );
//メイン関数
int main(void){
char *pBoundary = NULL;//バウンダリ文字列の先頭のポインタ
int boundaryNum = 0;//バウンダリの文字数
char *pEXT = NULL;
boundaryNum = GetBoundary( &pBoundary );
if(boundaryNum == -1) return 0;
if(GetEXTinHeader(&pEXT) == -1) return 0;
return 0;
}
//引数(バウンダリー文字列を返すポインタ)
//返り値(正常:格納した文字数、不正:-1)
int GetBoundary( char **reBou )
{
char boundary[70] = {};
int i = 0, tmp = 0;
while(i<70){
if( tmp <= 0 ) return -1;
if( tmp == '\n' ){
*reBou
= (char*)malloc(sizeof(char)*(i
+1));//reBouにバウンダリの文字数分メモリを確保 strncpy(*reBou
,boundary
,i
);//バウンダリ文字列をコピー *(*reBou + i) = '\0';//最後にヌル文字を入れる
return i;
}
boundary[i] = tmp;
i++;
}
return -1;
}
//引数(拡張子を返すポインタ)
//返り値(正常:0、不正:-1)
int GetEXTinHeader( char **reEXT )
{
char ext[3] = {};
char strTMP[11] = "filename=\"";
int j=0, tmp=0;
for(j=0;j!=46;j++){
}
for(j=0;j!=10;j++){
if(strTMP
[j
] != getchar()) return -1; }
while(1){
if(tmp <= 0 || tmp == '\n') return -1;
if(tmp == '.'){
for(j=0;j!=3;j++){
if(tmp <= 0 || tmp == '\n') return -1;
ext[j] = tmp;
}
*reEXT
= (char*)malloc(sizeof(char)*4); *(*reEXT + 4) = '\0';
return 0;
}
}
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8v5a6j6KiACmludCBHZXRCb3VuZGFyeSggY2hhciAqKnJlQm91ICk7CmludCBHZXRFWFRpbkhlYWRlciggY2hhciAqKnJlRVhUICk7CgovL+ODoeOCpOODs+mWouaVsAppbnQgbWFpbih2b2lkKXsKCWNoYXIgKnBCb3VuZGFyeSA9IE5VTEw7Ly/jg5Djgqbjg7Pjg4Djg6rmloflrZfliJfjga7lhYjpoK3jga7jg53jgqTjg7Pjgr8KCWludCBib3VuZGFyeU51bSA9IDA7Ly/jg5Djgqbjg7Pjg4Djg6rjga7mloflrZfmlbAKCWNoYXIgKnBFWFQgPSBOVUxMOwoJCglib3VuZGFyeU51bSA9IEdldEJvdW5kYXJ5KCAmcEJvdW5kYXJ5ICk7CglpZihib3VuZGFyeU51bSA9PSAtMSkgcmV0dXJuIDA7CgkKCWlmKEdldEVYVGluSGVhZGVyKCZwRVhUKSA9PSAtMSkgcmV0dXJuIDA7CgkKCXByaW50ZigiJXMiLHBFWFQpOwoJCglyZXR1cm4gMDsKfQoKCi8v5byV5pWwKOODkOOCpuODs+ODgOODquODvOaWh+Wtl+WIl+OCkui/lOOBmeODneOCpOODs+OCvykKLy/ov5TjgorlgKQo5q2j5bi4OuagvOe0jeOBl+OBn+aWh+Wtl+aVsOOAgeS4jeatozotMSkKaW50IEdldEJvdW5kYXJ5KCBjaGFyICoqcmVCb3UgKQp7CgljaGFyIGJvdW5kYXJ5WzcwXSA9IHt9OwoJaW50IGkgPSAwLCB0bXAgPSAwOwoJCgl3aGlsZShpPDcwKXsKCQl0bXAgPSBnZXRjaGFyKCk7CgkJaWYoIHRtcCA8PSAwICkgcmV0dXJuIC0xOwoJCWlmKCB0bXAgPT0gJ1xuJyApewoJCQkqcmVCb3UgPSAoY2hhciopbWFsbG9jKHNpemVvZihjaGFyKSooaSsxKSk7Ly9yZUJvdeOBq+ODkOOCpuODs+ODgOODquOBruaWh+Wtl+aVsOWIhuODoeODouODquOCkueiuuS/nQoJCQlzdHJuY3B5KCpyZUJvdSxib3VuZGFyeSxpKTsvL+ODkOOCpuODs+ODgOODquaWh+Wtl+WIl+OCkuOCs+ODlOODvAoJCQkqKCpyZUJvdSArIGkpID0gJ1wwJzsvL+acgOW+jOOBq+ODjOODq+aWh+Wtl+OCkuWFpeOCjOOCiwoJCQkKCQkJcmV0dXJuIGk7CgkJfQoJCWJvdW5kYXJ5W2ldID0gdG1wOwoJCWkrKzsKCX0KCXJldHVybiAtMTsKfQoKCi8v5byV5pWwKOaLoeW8teWtkOOCkui/lOOBmeODneOCpOODs+OCvykKLy/ov5TjgorlgKQo5q2j5bi4OjDjgIHkuI3mraM6LTEpCmludCBHZXRFWFRpbkhlYWRlciggY2hhciAqKnJlRVhUICkKewoJY2hhciBleHRbM10gPSB7fTsKCWNoYXIgc3RyVE1QWzExXSA9ICJmaWxlbmFtZT1cIiI7CglpbnQgaj0wLCB0bXA9MDsKCQoJZm9yKGo9MDtqIT00NjtqKyspewoJCWlmKGdldGNoYXIoKTw9MCkgcmV0dXJuIC0xOwoJfQoJCglmb3Ioaj0wO2ohPTEwO2orKyl7CgkJaWYoc3RyVE1QW2pdICE9IGdldGNoYXIoKSkgcmV0dXJuIC0xOwoJfQoJCgl3aGlsZSgxKXsKCQl0bXAgPSBnZXRjaGFyKCk7CgkJaWYodG1wIDw9IDAgfHwgdG1wID09ICdcbicpIHJldHVybiAtMTsKCQlpZih0bXAgPT0gJy4nKXsKCQkJZm9yKGo9MDtqIT0zO2orKyl7CgkJCQl0bXAgPSBnZXRjaGFyKCk7CgkJCQlpZih0bXAgPD0gMCB8fCB0bXAgPT0gJ1xuJykgcmV0dXJuIC0xOwoJCQkJZXh0W2pdID0gdG1wOwoJCQl9CgkJCWlmKGdldGNoYXIoKSA9PSAnXCInKXsKCQkJCSpyZUVYVCA9IChjaGFyKiltYWxsb2Moc2l6ZW9mKGNoYXIpKjQpOwoJCQkJc3RybmNweSgqcmVFWFQsZXh0LDMpOwoJCQkJKigqcmVFWFQgKyA0KSA9ICdcMCc7CgkJCQlyZXR1cm4gMDsKCQkJfQoJCX0KCX0KfQ==
LS0tLS0tV2ViS2l0Rm9ybUJvdW5kYXJ5TkRCdG92RVUyUWQ3bnR2QwpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9JnF1b3Q7ZmlsZTEmcXVvdDs7IGZpbGVuYW1lPSZxdW90O+OBpuOBmeOBqOOCky5qcGcmcXVvdDsKQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCnRoaXMgaXMgZmlsZQotLS0tLS1XZWJLaXRGb3JtQm91bmRhcnlOREJ0b3ZFVTJRZDdudHZDCkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0mcXVvdDtmaWxlMiZxdW90OzsgZmlsZW5hbWU9JnF1b3Q7JnF1b3Q7CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgoKLS0tLS0tV2ViS2l0Rm9ybUJvdW5kYXJ5TkRCdG92RVUyUWQ3bnR2QwpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9JnF1b3Q7ZmlsZTMmcXVvdDs7IGZpbGVuYW1lPSZxdW90OyZxdW90OwpDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKCi0tLS0tLVdlYktpdEZvcm1Cb3VuZGFyeU5EQnRvdkVVMlFkN250dkMKQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSZxdW90O2ZpbGU0JnF1b3Q7OyBmaWxlbmFtZT0mcXVvdDsmcXVvdDsKQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCgotLS0tLS1XZWJLaXRGb3JtQm91bmRhcnlOREJ0b3ZFVTJRZDdudHZDCkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0mcXVvdDtmaWxlNSZxdW90OzsgZmlsZW5hbWU9JnF1b3Q7JnF1b3Q7CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgoKLS0tLS0tV2ViS2l0Rm9ybUJvdW5kYXJ5TkRCdG92RVUyUWQ3bnR2Qw==
------WebKitFormBoundaryNDBtovEU2Qd7ntvC
Content-Disposition: form-data; name="file1"; filename="てすとん.jpg"
Content-Type: application/octet-stream
this is file
------WebKitFormBoundaryNDBtovEU2Qd7ntvC
Content-Disposition: form-data; name="file2"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryNDBtovEU2Qd7ntvC
Content-Disposition: form-data; name="file3"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryNDBtovEU2Qd7ntvC
Content-Disposition: form-data; name="file4"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryNDBtovEU2Qd7ntvC
Content-Disposition: form-data; name="file5"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryNDBtovEU2Qd7ntvC