Code cleanup

This commit is contained in:
Pierre Pronchery 2006-03-18 23:45:38 +00:00
parent 67a899d29e
commit 88f7d838a3

View File

@ -203,7 +203,7 @@ static int _ls(int argc, char * argv[], Prefs * prefs)
SList * files; SList * files;
SList * dirs; SList * dirs;
compare_func cmp = _ls_compare(prefs); compare_func cmp = _ls_compare(prefs);
int res = 0; int ret = 0;
int i; int i;
int isdir; int isdir;
char * str; char * str;
@ -213,21 +213,21 @@ static int _ls(int argc, char * argv[], Prefs * prefs)
if(_ls_args(&files, &dirs) != 0) if(_ls_args(&files, &dirs) != 0)
return 2; return 2;
if(argc == 0) if(argc == 0)
res += slist_insert_sorted(files, strdup("."), cmp); ret |= slist_insert_sorted(files, strdup("."), cmp);
for(i = 0; i < argc; i++) for(i = 0; i < argc; i++)
{ {
if((isdir = _is_directory(prefs, argv[i])) == 2) if((isdir = _is_directory(prefs, argv[i])) == 2)
res++; ret |= 1;
else if((str = strdup(argv[i])) == NULL) else if((str = strdup(argv[i])) == NULL)
res += _ls_error("malloc", 1); ret |= _ls_error("malloc", 1);
else if(*prefs & PREFS_d) else if(*prefs & PREFS_d)
res += slist_insert_sorted(files, str, cmp); ret |= slist_insert_sorted(files, str, cmp);
else else
res += slist_insert_sorted(isdir ? dirs : files, str, ret |= slist_insert_sorted(isdir ? dirs : files, str,
cmp); cmp);
} }
res += _ls_do(prefs, argc, NULL, files, dirs); ret |= _ls_do(prefs, argc, NULL, files, dirs);
return res == 1 ? 2 : res; return ret == 0 ? 0 : 1;
} }
static int _ls_error(char const * message, int ret) static int _ls_error(char const * message, int ret)
@ -277,7 +277,6 @@ static int _ls_directory_do(Prefs * prefs, char * directory)
SList * files; SList * files;
SList * dirs; SList * dirs;
compare_func cmp = _ls_compare(prefs); compare_func cmp = _ls_compare(prefs);
int res = 0;
DIR * dir; DIR * dir;
struct dirent * de; struct dirent * de;
char * file = NULL; char * file = NULL;
@ -285,7 +284,7 @@ static int _ls_directory_do(Prefs * prefs, char * directory)
int pos = 1; int pos = 1;
if((dir = opendir(directory)) == NULL) if((dir = opendir(directory)) == NULL)
return _ls_error(directory, 2); return _ls_error(directory, 1);
_ls_args(&files, &dirs); _ls_args(&files, &dirs);
for(; (de = readdir(dir)) != NULL; pos++) for(; (de = readdir(dir)) != NULL; pos++)
{ {
@ -308,7 +307,7 @@ static int _ls_directory_do(Prefs * prefs, char * directory)
free(file); free(file);
closedir(dir); closedir(dir);
_ls_do(prefs, 2, directory, files, dirs); _ls_do(prefs, 2, directory, files, dirs);
return res; return 0;
} }
static int _ls_args(SList ** files, SList ** dirs) static int _ls_args(SList ** files, SList ** dirs)
@ -341,8 +340,13 @@ static int _ls_do(Prefs * prefs, int argc, char * directory, SList * files,
SList * dirs) SList * dirs)
{ {
int res = 0; int res = 0;
char sep = 0;
if(slist_data(files) != NULL && slist_data(dirs) != NULL)
sep = '\n';
res += _ls_do_files(prefs, directory, files); res += _ls_do_files(prefs, directory, files);
if(sep != 0)
fputc(sep, stdout);
res += _ls_do_dirs(prefs, argc, dirs); res += _ls_do_dirs(prefs, argc, dirs);
return res; return res;
} }
@ -669,5 +673,5 @@ int main(int argc, char * argv[])
if(_prefs_parse(&p, argc, argv) != 0) if(_prefs_parse(&p, argc, argv) != 0)
return _usage(); return _usage();
return _ls(argc - optind, &argv[optind], &p); return _ls(argc - optind, &argv[optind], &p) == 0 ? 0 : 1;
} }