ls: avoid forward declaration. No code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
d27ac299eb
commit
66ca241dca
@ -890,51 +890,6 @@ static off_t calculate_blocks(struct dnode **dn)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static struct dnode **list_dir(const char *, unsigned *);
|
|
||||||
|
|
||||||
static void showdirs(struct dnode **dn, int first)
|
|
||||||
{
|
|
||||||
unsigned nfiles;
|
|
||||||
struct dnode **subdnp;
|
|
||||||
|
|
||||||
for (; *dn; dn++) {
|
|
||||||
if (all_fmt & (DISP_DIRNAME | DISP_RECURSIVE)) {
|
|
||||||
if (!first)
|
|
||||||
bb_putchar('\n');
|
|
||||||
first = 0;
|
|
||||||
printf("%s:\n", (*dn)->fullname);
|
|
||||||
}
|
|
||||||
subdnp = list_dir((*dn)->fullname, &nfiles);
|
|
||||||
#if ENABLE_DESKTOP
|
|
||||||
if ((all_fmt & STYLE_MASK) == STYLE_LONG)
|
|
||||||
printf("total %"OFF_FMT"u\n", calculate_blocks(subdnp));
|
|
||||||
#endif
|
|
||||||
if (nfiles > 0) {
|
|
||||||
/* list all files at this level */
|
|
||||||
dnsort(subdnp, nfiles);
|
|
||||||
showfiles(subdnp, nfiles);
|
|
||||||
if (ENABLE_FEATURE_LS_RECURSIVE
|
|
||||||
&& (all_fmt & DISP_RECURSIVE)
|
|
||||||
) {
|
|
||||||
struct dnode **dnd;
|
|
||||||
unsigned dndirs;
|
|
||||||
/* recursive - list the sub-dirs */
|
|
||||||
dnd = splitdnarray(subdnp, SPLIT_SUBDIR);
|
|
||||||
dndirs = count_dirs(subdnp, SPLIT_SUBDIR);
|
|
||||||
if (dndirs > 0) {
|
|
||||||
dnsort(dnd, dndirs);
|
|
||||||
showdirs(dnd, 0);
|
|
||||||
/* free the array of dnode pointers to the dirs */
|
|
||||||
free(dnd);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* free the dnodes and the fullname mem */
|
|
||||||
dfree(subdnp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Returns NULL-terminated malloced vector of pointers (or NULL) */
|
/* Returns NULL-terminated malloced vector of pointers (or NULL) */
|
||||||
static struct dnode **list_dir(const char *path, unsigned *nfiles_p)
|
static struct dnode **list_dir(const char *path, unsigned *nfiles_p)
|
||||||
{
|
{
|
||||||
@ -996,6 +951,49 @@ static struct dnode **list_dir(const char *path, unsigned *nfiles_p)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void showdirs(struct dnode **dn, int first)
|
||||||
|
{
|
||||||
|
unsigned nfiles;
|
||||||
|
struct dnode **subdnp;
|
||||||
|
|
||||||
|
for (; *dn; dn++) {
|
||||||
|
if (all_fmt & (DISP_DIRNAME | DISP_RECURSIVE)) {
|
||||||
|
if (!first)
|
||||||
|
bb_putchar('\n');
|
||||||
|
first = 0;
|
||||||
|
printf("%s:\n", (*dn)->fullname);
|
||||||
|
}
|
||||||
|
subdnp = list_dir((*dn)->fullname, &nfiles);
|
||||||
|
#if ENABLE_DESKTOP
|
||||||
|
if ((all_fmt & STYLE_MASK) == STYLE_LONG)
|
||||||
|
printf("total %"OFF_FMT"u\n", calculate_blocks(subdnp));
|
||||||
|
#endif
|
||||||
|
if (nfiles > 0) {
|
||||||
|
/* list all files at this level */
|
||||||
|
dnsort(subdnp, nfiles);
|
||||||
|
showfiles(subdnp, nfiles);
|
||||||
|
if (ENABLE_FEATURE_LS_RECURSIVE
|
||||||
|
&& (all_fmt & DISP_RECURSIVE)
|
||||||
|
) {
|
||||||
|
struct dnode **dnd;
|
||||||
|
unsigned dndirs;
|
||||||
|
/* recursive - list the sub-dirs */
|
||||||
|
dnd = splitdnarray(subdnp, SPLIT_SUBDIR);
|
||||||
|
dndirs = count_dirs(subdnp, SPLIT_SUBDIR);
|
||||||
|
if (dndirs > 0) {
|
||||||
|
dnsort(dnd, dndirs);
|
||||||
|
showdirs(dnd, 0);
|
||||||
|
/* free the array of dnode pointers to the dirs */
|
||||||
|
free(dnd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* free the dnodes and the fullname mem */
|
||||||
|
dfree(subdnp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int ls_main(int argc UNUSED_PARAM, char **argv)
|
int ls_main(int argc UNUSED_PARAM, char **argv)
|
||||||
{
|
{
|
||||||
struct dnode **dnd;
|
struct dnode **dnd;
|
||||||
|
Loading…
Reference in New Issue
Block a user