Date: Tue, 17 Jun 2014 14:57:28 GMT From: zkorchev@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r269686 - soc2014/zkorchev/freebsd_head/bin/ls Message-ID: <201406171457.s5HEvStV006854@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: zkorchev Date: Tue Jun 17 14:57:28 2014 New Revision: 269686 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=269686 Log: ls improvements Deleted: soc2014/zkorchev/freebsd_head/bin/ls/sol.c soc2014/zkorchev/freebsd_head/bin/ls/sol.h Modified: soc2014/zkorchev/freebsd_head/bin/ls/Makefile soc2014/zkorchev/freebsd_head/bin/ls/ls.c soc2014/zkorchev/freebsd_head/bin/ls/print.c soc2014/zkorchev/freebsd_head/bin/ls/util.c Modified: soc2014/zkorchev/freebsd_head/bin/ls/Makefile ============================================================================== --- soc2014/zkorchev/freebsd_head/bin/ls/Makefile Tue Jun 17 13:14:31 2014 (r269685) +++ soc2014/zkorchev/freebsd_head/bin/ls/Makefile Tue Jun 17 14:57:28 2014 (r269686) @@ -4,9 +4,9 @@ .include <src.opts.mk> PROG= ls -SRCS= cmp.c ls.c print.c util.c sol.c +SRCS= cmp.c ls.c print.c util.c DPADD= ${LIBUTIL} -LDADD= -L/usr/local/lib -lutil -lyajl +LDADD= -L/usr/local/lib -lutil -lsol CFLAGS+= -DSOL_ON -I/usr/local/include -Wno-format-invalid-specifier .if !defined(RELEASE_CRUNCH) && \ Modified: soc2014/zkorchev/freebsd_head/bin/ls/ls.c ============================================================================== --- soc2014/zkorchev/freebsd_head/bin/ls/ls.c Tue Jun 17 13:14:31 2014 (r269685) +++ soc2014/zkorchev/freebsd_head/bin/ls/ls.c Tue Jun 17 14:57:28 2014 (r269686) @@ -66,10 +66,12 @@ #include <termcap.h> #include <signal.h> #endif +#if defined(SOL_ON) +# include <sol.h> +#endif #include "ls.h" #include "extern.h" -#include "sol.h" /* * Upward approximation of the maximum number of characters needed to @@ -194,11 +196,7 @@ if (getenv("LS_SAMESORT")) f_samesort = 1; while ((ch = getopt(argc, argv, -#if defined(SOL_ON) "1ABCD:FGHILOPRSTUWXZabcdfghiklmnopqrstuwxy,")) != -1) { -#else - "1ABCD:FGHILPRSTUWXZabcdfghiklmnopqrstuwxy,")) != -1) { -#endif switch (ch) { /* * The -1, -C, -x and -l options all override each other so @@ -222,11 +220,13 @@ f_longform = 0; f_singlecol = 0; break; -#if defined(SOL_ON) case 'O': +#if defined(SOL_ON) f_solformat = 1; - break; +#else + errx(1, "ls compiled without -O support"); #endif + break; /* The -c, -u, and -U options override each other. */ case 'c': f_statustime = 1; @@ -278,7 +278,11 @@ f_slash = 0; break; case 'G': +#if defined(COLORLS) setenv("CLICOLOR", "", 1); +#else + errx(1, "ls compiled without -G support"); +#endif break; case 'H': fts_options |= FTS_COMFOLLOW; @@ -508,7 +512,11 @@ } #if defined(SOL_ON) - if (f_solformat) sol_init(&sol_stream, SOL_JSON); + if (f_solformat) { + sol_init(&sol_stream, SOL_JSON); + if (f_recursive || (argc > 1)) + sol_map_start(&sol_stream); + } #endif if (argc) @@ -517,7 +525,10 @@ traverse(1, dotav, fts_options); #if defined(SOL_ON) - if (f_solformat) sol_term(&sol_stream); + if (f_solformat) { + if (f_recursive || (argc > 1)) sol_map_end(&sol_stream); + sol_term(&sol_stream); + } #endif exit(rval); @@ -579,22 +590,32 @@ * a separator. If multiple arguments, precede each * directory with its name. */ -#if !defined(SOL_ON) - if (output) { - putchar('\n'); - (void)printname(p->fts_path); - puts(":"); - } else if (argc > 1) { - (void)printname(p->fts_path); - puts(":"); - output = 1; +#if defined(SOL_ON) + if (f_solformat) + { + if (f_recursive || (argc > 1)) + sol_map_key(&sol_stream, p->fts_path, p->fts_pathlen); + sol_array_start(&sol_stream); } -#else - (void)argc; // TODO remove this - // TODO zaro what to do on multiple directory listing? + else #endif + { + if (output) { + putchar('\n'); + (void)printname(p->fts_path); + puts(":"); + } else if (argc > 1) { + (void)printname(p->fts_path); + puts(":"); + output = 1; + } + } chp = fts_children(ftsp, ch_options); display(p, chp, options); +#if defined(SOL_ON) + if (f_solformat) + sol_array_end(&sol_stream); +#endif if (!f_recursive && chp != NULL) (void)fts_set(ftsp, p, FTS_SKIP); Modified: soc2014/zkorchev/freebsd_head/bin/ls/print.c ============================================================================== --- soc2014/zkorchev/freebsd_head/bin/ls/print.c Tue Jun 17 13:14:31 2014 (r269685) +++ soc2014/zkorchev/freebsd_head/bin/ls/print.c Tue Jun 17 14:57:28 2014 (r269686) @@ -58,10 +58,12 @@ #include <termcap.h> #include <signal.h> #endif +#if defined(SOL_ON) +# include <sol.h> +#endif #include "ls.h" #include "extern.h" -#include "sol.h" static int printaname(const FTSENT *, u_long, u_long); static void printdev(size_t, dev_t); @@ -389,8 +391,8 @@ #if defined(SOL_ON) if (f_solformat) { - sol_map_key(&sol_stream, "time", 4); - sol_map_string(&sol_stream, longstring, len); + SOL_MAP_KEYL(&sol_stream, "time"); + sol_string(&sol_stream, longstring, len); } else #endif @@ -409,8 +411,8 @@ if ((mode & S_IFMT) == S_IFDIR) { #if defined(SOL_ON) if (f_solformat) { - sol_map_key(&sol_stream, "type", 4); - sol_map_string(&sol_stream, "/", 1); + SOL_MAP_KEYL(&sol_stream, "type"); + sol_string(&sol_stream, "/", 1); } else #endif @@ -446,8 +448,8 @@ #if defined(SOL_ON) if (f_solformat) { - sol_map_key(&sol_stream, "type", 4); - sol_map_string(&sol_stream, &type, 1); + SOL_MAP_KEYL(&sol_stream, "type"); + sol_string(&sol_stream, &type, 1); } else #endif @@ -620,8 +622,8 @@ #if defined(SOL_ON) if (f_solformat) { - sol_map_key(&sol_stream, "link", 4); - sol_map_string(&sol_stream, path, lnklen); + SOL_MAP_KEYL(&sol_stream, "link"); + sol_string(&sol_stream, path, lnklen); } else #endif @@ -738,8 +740,6 @@ (void)printf("total %lu\n", howmany(dp->btotal, blocksize)); }*/ - sol_array_start(&sol_stream); - for (p = dp->list; p; p = p->fts_link) { if (IS_NOPRINT(p)) continue; @@ -748,48 +748,48 @@ sp = p->fts_statp; if (f_inode) { - sol_map_key(&sol_stream, "inode", 5); - sol_map_integer(&sol_stream, sp->st_ino); + SOL_MAP_KEYL(&sol_stream, "inode"); + sol_integer(&sol_stream, sp->st_ino); } if (f_size) { - sol_map_key(&sol_stream, "bsize", 5); - sol_map_integer(&sol_stream, howmany(sp->st_blocks, blocksize)); + SOL_MAP_KEYL(&sol_stream, "bsize"); + sol_integer(&sol_stream, howmany(sp->st_blocks, blocksize)); } strmode(sp->st_mode, buf); aclmode(buf, p); np = p->fts_pointer; - sol_map_key(&sol_stream, "mode", 4); - sol_map_string(&sol_stream, buf, strlen(buf)); + SOL_MAP_KEYL(&sol_stream, "mode"); + sol_string(&sol_stream, buf, strlen(buf)); - sol_map_key(&sol_stream, "nlink", 5); - sol_map_integer(&sol_stream, sp->st_nlink); + SOL_MAP_KEYL(&sol_stream, "nlink"); + sol_integer(&sol_stream, sp->st_nlink); if (f_numericonly) { - sol_map_key(&sol_stream, "uid", 3); - sol_map_integer(&sol_stream, sp->st_uid); - sol_map_key(&sol_stream, "gid", 3); - sol_map_integer(&sol_stream, sp->st_gid); + SOL_MAP_KEYL(&sol_stream, "uid"); + sol_integer(&sol_stream, sp->st_uid); + SOL_MAP_KEYL(&sol_stream, "gid"); + sol_integer(&sol_stream, sp->st_gid); } else { - sol_map_key(&sol_stream, "user", 4); - sol_map_string(&sol_stream, np->user, strlen(np->user)); - sol_map_key(&sol_stream, "group", 5); - sol_map_string(&sol_stream, np->group, strlen(np->group)); + SOL_MAP_KEYL(&sol_stream, "user"); + sol_string(&sol_stream, np->user, strlen(np->user)); + SOL_MAP_KEYL(&sol_stream, "group"); + sol_string(&sol_stream, np->group, strlen(np->group)); } if (f_flags) { - sol_map_key(&sol_stream, "flags", 5); - sol_map_string(&sol_stream, np->flags, strlen(np->flags)); + SOL_MAP_KEYL(&sol_stream, "flags"); + sol_string(&sol_stream, np->flags, strlen(np->flags)); } if (f_label) { - sol_map_key(&sol_stream, "label", 5); - sol_map_string(&sol_stream, np->label, strlen(np->label)); + SOL_MAP_KEYL(&sol_stream, "label"); + sol_string(&sol_stream, np->label, strlen(np->label)); } if (S_ISCHR(sp->st_mode) || S_ISBLK(sp->st_mode)) { - sol_map_key(&sol_stream, "dev", 3); - sol_map_integer(&sol_stream, sp->st_rdev); // TODO hex? + SOL_MAP_KEYL(&sol_stream, "dev"); + sol_integer(&sol_stream, sp->st_rdev); // TODO hex? } else { if (f_humanval) { @@ -801,8 +801,8 @@ size_t len = humanize_number(buffer, sizeof(buffer), (int64_t)sp->st_size, "", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL); - sol_map_key(&sol_stream, "hsize", 5); - sol_map_string(&sol_stream, buffer, len); + SOL_MAP_KEYL(&sol_stream, "hsize"); + sol_string(&sol_stream, buffer, len); } else if (f_thousands) { /* with commas */ /* * Reserve 4 bytes for each byte of the size. @@ -812,11 +812,11 @@ const char *format = "%j'd "; size_t len = snprintf(buffer, sizeof(buffer), format, sp->st_size); - sol_map_key(&sol_stream, "csize", 5); - sol_map_string(&sol_stream, buffer, len); + SOL_MAP_KEYL(&sol_stream, "csize"); + sol_string(&sol_stream, buffer, len); } else { - sol_map_key(&sol_stream, "size", 4); - sol_map_integer(&sol_stream, sp->st_size); + SOL_MAP_KEYL(&sol_stream, "size"); + sol_integer(&sol_stream, sp->st_size); } } @@ -829,8 +829,8 @@ else printtime(sp->st_mtime); - sol_map_key(&sol_stream, "name", 4); - sol_map_string(&sol_stream, p->fts_name, p->fts_namelen); + SOL_MAP_KEYL(&sol_stream, "name"); + sol_string(&sol_stream, p->fts_name, p->fts_namelen); if (f_type) (void)printtype(sp->st_mode); @@ -839,8 +839,6 @@ sol_map_end(&sol_stream); } - - sol_array_end(&sol_stream); } void @@ -848,12 +846,10 @@ { FTSENT *p; - sol_array_start(&sol_stream); for (p = dp->list; p; p = p->fts_link) { if (IS_NOPRINT(p)) continue; sol_string(&sol_stream, p->fts_name, p->fts_namelen); } - sol_array_end(&sol_stream); } #endif Modified: soc2014/zkorchev/freebsd_head/bin/ls/util.c ============================================================================== --- soc2014/zkorchev/freebsd_head/bin/ls/util.c Tue Jun 17 13:14:31 2014 (r269685) +++ soc2014/zkorchev/freebsd_head/bin/ls/util.c Tue Jun 17 14:57:28 2014 (r269686) @@ -224,14 +224,6 @@ usage(void) { (void)fprintf(stderr, - "usage: ls [-ABCF" -#if defined(COLORLS) - "G" -#endif - "HIL" -#if defined(SOL_ON) - "O" -#endif - "PRSTUWZabcdfghiklmnopqrstuwxy1,] [-D format] [file ...]\n"); + "usage: ls [-ABCFGHILOPRSTUWZabcdfghiklmnopqrstuwxy1,] [-D format] [file ...]\n"); exit(1); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201406171457.s5HEvStV006854>
