From owner-svn-soc-all@FreeBSD.ORG Mon Aug 4 09:31:41 2014 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3F811C74 for ; Mon, 4 Aug 2014 09:31:41 +0000 (UTC) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2BB072D1D for ; Mon, 4 Aug 2014 09:31:41 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id s749Vfq1032194 for ; Mon, 4 Aug 2014 09:31:41 GMT (envelope-from zkorchev@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id s749VeoS031968 for svn-soc-all@FreeBSD.org; Mon, 4 Aug 2014 09:31:40 GMT (envelope-from zkorchev@FreeBSD.org) Date: Mon, 4 Aug 2014 09:31:40 GMT Message-Id: <201408040931.s749VeoS031968@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to zkorchev@FreeBSD.org using -f From: zkorchev@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r271838 - soc2014/zkorchev/freebsd_head/lib/libsol MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Aug 2014 09:31:41 -0000 Author: zkorchev Date: Mon Aug 4 09:31:39 2014 New Revision: 271838 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=271838 Log: libsol configuration format support; reduced include dependencies by libraries using libsol Modified: soc2014/zkorchev/freebsd_head/lib/libsol/Makefile soc2014/zkorchev/freebsd_head/lib/libsol/sol.c soc2014/zkorchev/freebsd_head/lib/libsol/sol.h Modified: soc2014/zkorchev/freebsd_head/lib/libsol/Makefile ============================================================================== --- soc2014/zkorchev/freebsd_head/lib/libsol/Makefile Mon Aug 4 09:30:19 2014 (r271837) +++ soc2014/zkorchev/freebsd_head/lib/libsol/Makefile Mon Aug 4 09:31:39 2014 (r271838) @@ -5,7 +5,7 @@ SHLIBDIR?= /lib SHLIB_MAJOR= 0 SRCS= sol.c -INCS= sol.h +INCS= sol.h sol_internal.h #MAN= vmstat.8 LDFLAGS+= -L/usr/local/lib -lyajl Modified: soc2014/zkorchev/freebsd_head/lib/libsol/sol.c ============================================================================== --- soc2014/zkorchev/freebsd_head/lib/libsol/sol.c Mon Aug 4 09:30:19 2014 (r271837) +++ soc2014/zkorchev/freebsd_head/lib/libsol/sol.c Mon Aug 4 09:31:39 2014 (r271838) @@ -28,7 +28,24 @@ #include #include -#include "sol.h" +#include // libyajl + +#include "sol_internal.h" + +struct sol_stream +{ + enum sol_format f; + union + { + yajl_gen g; + struct + { + unsigned char stack[SOL_DEPTH_MAX]; + unsigned depth; + int first; + } c; + } ctx; +}; // TODO error checks @@ -69,6 +86,10 @@ stream->ctx.c.depth = 0; stream->ctx.c.first = 0; } + else if (!strcmp(format, "xml")) + { + stream->f = SOL_XML; + } else return 0; return stream->f; @@ -88,6 +109,7 @@ break; case SOL_CONF: + case SOL_XML: fflush(stdout); break; } @@ -104,6 +126,7 @@ break; case SOL_CONF: + case SOL_XML: write(1, "\n", 1); // TODO change this break; } @@ -124,6 +147,9 @@ stream->ctx.c.stack[stream->ctx.c.depth++] = 0; stream->ctx.c.first = 1; break; + + case SOL_XML: + break; } return 0; @@ -204,7 +230,7 @@ case SOL_CONF: padding(stream); - printf("%s", key); + printf("%s", key); // TODO escape special chars break; } Modified: soc2014/zkorchev/freebsd_head/lib/libsol/sol.h ============================================================================== --- soc2014/zkorchev/freebsd_head/lib/libsol/sol.h Mon Aug 4 09:30:19 2014 (r271837) +++ soc2014/zkorchev/freebsd_head/lib/libsol/sol.h Mon Aug 4 09:31:39 2014 (r271838) @@ -23,27 +23,24 @@ * SUCH DAMAGE. */ -#include - -#include // libyajl +#include "sol_internal.h" #define SOL_MAP_KEYL(stream, key) sol_map_key(stream, key, sizeof(key) - 1) -#define SOL_DEPTH_MAX 32 - +// WARNING: This is not the real layout of the struct. It just defines the size of the struct. struct sol_stream { - enum {SOL_JSON = 1, SOL_CONF} f; - union - { - yajl_gen g; - struct + char _[sizeof(struct { - unsigned char stack[SOL_DEPTH_MAX]; - unsigned depth; - int first; - } c; - } ctx; + enum sol_format f; + struct + { + unsigned char stack[SOL_DEPTH_MAX]; + unsigned depth; + int first; + } c; + } + )]; }; int sol_init(struct sol_stream *restrict stream);