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