mk1dir(
const char *dir, /* directory to create */
mode_t mode, /* mode for new directory */
- uid_t G_GNUC_UNUSED uid, /* uid for new directory */
- gid_t G_GNUC_UNUSED gid) /* gid for new directory */
+ uid_t uid, /* uid for new directory */
+ gid_t gid) /* gid for new directory */
{
int rc; /* return code */
rc = mkdir(dir, mode);
- if(rc != 0) { /* maybe someone beat us to it */
+ if(rc != 0) {
int serrno;
serrno = errno;
- if(access(dir, F_OK) != 0)
- rc = -1;
- errno = serrno; /* pass back the real error */
+ if(access(dir, F_OK) == 0)
+ rc = 0; /* someone just beat us to it, so it's OK */
+ errno = serrno;
}
/* mkdir is affected by umask, so set the mode bits manually */
if (client_uid != (uid_t) -1) {
#if defined(AMANDA_DBGDIR)
d = stralloc2(AMANDA_DBGDIR, "/.");
- (void) mkpdir(d, (mode_t)02700, client_uid, client_gid);
+ (void) mkpdir(d, (mode_t)0700, client_uid, client_gid);
amfree(d);
#endif
d = stralloc2(AMANDA_TMPDIR, "/.");
- (void) mkpdir(d, (mode_t)02700, client_uid, client_gid);
+ (void) mkpdir(d, (mode_t)0700, client_uid, client_gid);
amfree(d);
}
}
if (ch == '\\') {
- escape = 1;
+ escape = !escape;
} else {
if (ch == '"') {
if (!escape)