Definition at line 57 of file pgmkdirp.c.
58{
61 int last,
62 retval;
63 char *p;
64
65 retval = 0;
66 p = path;
67
68#ifdef WIN32
69
71 {
72 if (p[0] == '/' && p[1] == '/')
73 {
74
77 {
79 return -1;
80 }
81 }
82 else if (p[1] == ':' &&
83 ((p[0] >= 'a' && p[0] <= 'z') ||
84 (p[0] >= 'A' && p[0] <= 'Z')))
85 {
86
87 p += 2;
88 }
89 }
90#endif
91
92
93
94
95
96
97
98
99
100
101
105
106 if (p[0] == '/')
107 ++p;
108 for (last = 0; !last; ++p)
109 {
110 if (p[0] == '\0')
111 last = 1;
112 else if (p[0] != '/')
113 continue;
114 *p = '\0';
115 if (!last && p[1] == '\0')
116 last = 1;
117
118 if (last)
120
122 {
123
124
125
126
127#ifndef WIN32
130
134 {
135
137 retval = -1;
138 break;
139 }
140#else
141
142
143
144
145
146
147
148
150
154 {
155 retval = -1;
156 break;
157 }
158#endif
159 }
160
161 if (!last)
162 *p = '/';
163 }
164
165
167
168 return retval;
169}
References fb(), mkdir, S_IRWXG, S_IRWXO, S_IRWXU, S_ISDIR, S_IWUSR, S_IXUSR, and stat.
Referenced by create_data_directory(), create_fullpage_directory(), create_output_directory(), create_xlog_or_symlink(), main(), prepare_for_swap(), recovery_create_dbdir(), StartLogStreamer(), TablespaceCreateDbspace(), and verify_dir_is_empty_or_create().