socsvn commit: r268520 - soc2014/zkorchev/coreutils-8.22/src

zkorchev at FreeBSD.org zkorchev at FreeBSD.org
Fri May 23 21:36:24 UTC 2014


Author: zkorchev
Date: Fri May 23 21:36:22 2014
New Revision: 268520
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=268520

Log:
  compilation simplified; format is now specified when calling sol_init()

Modified:
  soc2014/zkorchev/coreutils-8.22/src/compile
  soc2014/zkorchev/coreutils-8.22/src/sol.c
  soc2014/zkorchev/coreutils-8.22/src/sol.h
  soc2014/zkorchev/coreutils-8.22/src/sol_ls.c

Modified: soc2014/zkorchev/coreutils-8.22/src/compile
==============================================================================
--- soc2014/zkorchev/coreutils-8.22/src/compile	Fri May 23 21:28:41 2014	(r268519)
+++ soc2014/zkorchev/coreutils-8.22/src/compile	Fri May 23 21:36:22 2014	(r268520)
@@ -1,9 +1,9 @@
-all: sol.o sol_ls
+all: sol_ls
 
 sol.o:
 	cc -I/usr/local/include -c sol.c -o sol.o
 
-sol_ls:
+sol_ls: sol.o sol_ls.o
 	cc version.o ls-ls.o sol_ls.o sol.o ../lib/libcoreutils.a -o sol_ls -L/usr/local/lib -lyajl -lintl
 
 clean:

Modified: soc2014/zkorchev/coreutils-8.22/src/sol.c
==============================================================================
--- soc2014/zkorchev/coreutils-8.22/src/sol.c	Fri May 23 21:28:41 2014	(r268519)
+++ soc2014/zkorchev/coreutils-8.22/src/sol.c	Fri May 23 21:36:22 2014	(r268520)
@@ -6,17 +6,22 @@
 
 struct sol_data
 {
-	yajl_gen g;
+	enum sol_format f;
+	union
+	{
+		yajl_gen g;
+	} ctx;
 };
 
-static yajl_gen g;
+static struct sol_data sol;
 
 // TODO don't use static variables
 // TODO error checks
 
-void sol_init(void)
+void sol_init(enum sol_format format)
 {
-	g = yajl_gen_alloc(0);
+	sol.f = format;
+	sol.ctx.g = yajl_gen_alloc(0);
 }
 
 void sol_term(void)
@@ -24,50 +29,55 @@
 	const char *buffer;
 	size_t length;
 
-	yajl_gen_get_buf(g, (const unsigned char **)&buffer, &length);
-	write(1, buffer, length);
-	write(1, "\n", 1); // TODO change this
-	yajl_gen_clear(g);
+	switch (sol.f)
+	{
+	case SOL_JSON:
+		yajl_gen_get_buf(sol.ctx.g, (const unsigned char **)&buffer, &length);
+		write(1, buffer, length);
+		write(1, "\n", 1); // TODO change this
+		yajl_gen_clear(sol.ctx.g);
+		break;
+	}
 
-	yajl_gen_free(g);
+	yajl_gen_free(sol.ctx.g);
 }
 
 void sol_array_start(void)
 {
-	yajl_gen_array_open(g);
+	yajl_gen_array_open(sol.ctx.g);
 }
 
 void sol_array_end(void)
 {
-	yajl_gen_array_close(g);
+	yajl_gen_array_close(sol.ctx.g);
 }
 
 void sol_string(const char *data, size_t length)
 {
 	// TODO handle special characters
-	yajl_gen_string(g, (const unsigned char *)data, length);
+	yajl_gen_string(sol.ctx.g, (const unsigned char *)data, length);
 }
 
 void sol_map_start(void)
 {
-	yajl_gen_map_open(g);
+	yajl_gen_map_open(sol.ctx.g);
 }
 
 void sol_map_end(void)
 {
-	yajl_gen_map_close(g);
+	yajl_gen_map_close(sol.ctx.g);
 }
 
 void sol_pair_string(const char *key_data, size_t key_length, const char *value_data, size_t value_length)
 {
 	// TODO handle special characters
-	yajl_gen_string(g, (const unsigned char *)key_data, key_length);
-	yajl_gen_string(g, (const unsigned char *)value_data, value_length);
+	yajl_gen_string(sol.ctx.g, (const unsigned char *)key_data, key_length);
+	yajl_gen_string(sol.ctx.g, (const unsigned char *)value_data, value_length);
 }
 
 void sol_pair_integer(const char *key_data, size_t key_length, long long value)
 {
 	// TODO handle special characters
-	yajl_gen_string(g, (const unsigned char *)key_data, key_length);
-	yajl_gen_integer(g, value);
+	yajl_gen_string(sol.ctx.g, (const unsigned char *)key_data, key_length);
+	yajl_gen_integer(sol.ctx.g, value);
 }

Modified: soc2014/zkorchev/coreutils-8.22/src/sol.h
==============================================================================
--- soc2014/zkorchev/coreutils-8.22/src/sol.h	Fri May 23 21:28:41 2014	(r268519)
+++ soc2014/zkorchev/coreutils-8.22/src/sol.h	Fri May 23 21:36:22 2014	(r268520)
@@ -1,4 +1,9 @@
-void sol_init(void);
+enum sol_format
+{
+	SOL_JSON = 1,
+};
+
+void sol_init(enum sol_format format);
 void sol_term(void);
 
 void sol_array_start(void);

Modified: soc2014/zkorchev/coreutils-8.22/src/sol_ls.c
==============================================================================
--- soc2014/zkorchev/coreutils-8.22/src/sol_ls.c	Fri May 23 21:28:41 2014	(r268519)
+++ soc2014/zkorchev/coreutils-8.22/src/sol_ls.c	Fri May 23 21:36:22 2014	(r268520)
@@ -1424,7 +1424,7 @@
     }
 
 #if defined(SOL_ON)
-  sol_init();
+  sol_init(SOL_JSON);
   sol_array_start();
 #endif
 
@@ -2677,6 +2677,7 @@
   if (recursive)
     extract_dirs_from_files (name, false);
 
+#if !defined(SOL_ON)
   if (format == long_format || print_block_size)
     {
       const char *p;
@@ -2691,6 +2692,7 @@
       DIRED_FPUTS (p, stdout, strlen (p));
       DIRED_PUTCHAR ('\n');
     }
+#endif
 
   if (cwd_n_used)
     print_current_files ();
@@ -3831,13 +3833,11 @@
 static void
 format_owner(unsigned long id, const char *id_data, size_t id_length, const char *name_data, size_t name_length)
 {
-  if (numeric_ids)
+  const char *name;
+  if (numeric_ids || !(name = getuser(id)))
     sol_pair_integer(id_data, id_length, id);
   else
-    {
-      const char *name = getuser(id);
-      sol_pair_string(name_data, name_length, name, strlen(name));
-    }
+    sol_pair_string(name_data, name_length, name, strlen(name));
 }
 
 /* Print information about F in long format.  */


More information about the svn-soc-all mailing list