LINUX.ORG.RU

помогите отыскать ошибку в простом коде на си

 ,


0

1

в общем написал функцию рекурсивного создания каталогов, что-то типа mkdir -p «/bla/bla/bla» но выдает какую-то нелепую ошибку или просто глаз замылился, в общем помогите пожалуйста

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <errno.h>

#define MAX_FILENAME_LEN 256
#define Err -1;
#define Succ 0;
#define FOLDER_SEPARATOR "/"

typedef int RC_t;

RC_t create_dir_rec(char *name, mode_t mode)
{
	char tmp[MAX_FILENAME_LEN], dir[MAX_FILENAME_LEN];
	int i, ret;
	RC_t rc = Succ;
	if (strlen(name) >= MAX_FILENAME_LEN) {
		return Err;
	}
	strcpy(tmp, name);
	for (;(strncmp(&tmp[strlen(tmp) - 1], FOLDER_SEPARATOR, 1) == 0)&&(*tmp != '\0');tmp[strlen(tmp) - 1] = '\0');
	
	for (i = 0; tmp[i] != '\0'; i++) {
		if (strncmp(&tmp[i], FOLDER_SEPARATOR, 1) == 0) {
			strncpy(dir, tmp, i + 1);
			dir[i + 1] = '\0';
			//printf("\"%s\"\n", dir);
			if ( (ret = mkdir(dir, mode)) == -1) {
				if (ret == EEXIST) {
					continue;
				} else {
					perror("mkdir");
					rc = Err;
					break;
				}
			}
		}
	}

	if (rc == Err) {
		return Err;
	} else {
		printf("\"%s\"\n", tmp);
		return Succ;
	}
}

int main(void)
{
	create_dir_rec("/tmp/asd/zxc/qwer//poiu//hello////", S_IRUSR|S_IWUSR|S_IRWXG|S_IRGRP);
	return 0;
}

вот код ошибки

rec.c: In function ‘create_dir_rec’:
rec.c:45:12: error: expected ‘)’ before ‘;’ token
если что, то 45-я строка это if (rc == Err) { если закоментировать этот блок if else, то собирается.

★★★

Ответ на: комментарий от prischeyadro

ой блин, случайно наверно, спасибо.

IvanR ★★★
() автор топика
Ответ на: комментарий от Deleted

да, можно попроще, согласен

IvanR ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.