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