OSDN Git Service

VER0.1.4
[lib1stclass/main.git] / rmkdir.c
1 /*
2 * See the file LICENSE for redistribution information.
3 *
4 * Copyright: 2010- 1stclass.co.jp.  All rights reserved.
5 *
6 * Created by Hajime Kurita
7 */
8 #include <stdio.h>
9 #include <sys/stat.h>
10 #include <dirent.h>
11 #include <string.h>
12
13 #ifdef __cplusplus
14 #include "1stclass.hpp"
15 int firstclass::rmkdir(const string in_dir){
16   char abs_dir[2048]="";
17   string abs_dir_str=rel2abs(in_dir);
18   safe_strcat(abs_dir, abs_dir_str.c_str(), sizeof(abs_dir));
19 #else
20 #include "1stclass.h"
21 int rmkdir(const char *check_dir){
22   char abs_dir[2048]="";
23   rel2abs(check_dir, abs_dir);
24 #endif
25   
26   struct stat st;
27   char *token_p=NULL;
28   char dir_path[2048]="";
29   char moto[2048]="";
30   if(stat(abs_dir, &st)!=0){
31     if(mkdir(abs_dir, 0755)==0){
32     }
33     else{
34       safe_strcat(moto, abs_dir, sizeof(moto));
35       token_p=strtok(moto, "/");
36       safe_strcat(dir_path, "/", sizeof(dir_path));
37       safe_strcat(dir_path, token_p, sizeof(dir_path));
38       if(stat(dir_path, &st)!=0){
39         if(mkdir(dir_path, 0755)==0){
40         }
41         else{
42           return 1;
43         }
44       }
45       while((token_p=strtok(NULL,"/"))!=NULL){
46         safe_strcat(dir_path, "/", sizeof(dir_path));
47         safe_strcat(dir_path, token_p, sizeof(dir_path));
48         if(stat(dir_path, &st)!=0){
49           if(mkdir(dir_path, 0755)==0){
50           }
51           else{
52             return 1;
53           }
54         }
55       }
56     }
57   }
58   return 0;
59 }