Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 May 2014 02:09:25 +0300
From:      Zaro Korchev <zkorchev@mail.bg>
To:        soc-status@freebsd.org
Subject:   [Machine readable output from userland utilities] report
Message-ID:  <8D1B686D-1AAA-4E07-9270-E42699110561@mail.bg>

index | next in thread | raw e-mail

This week I made a simple design for the project and implemented JSON output for an example application.

I made research on several libraries that I may use for my project. I designed a simple API for structured output. At the moment I call it SOL (Structured Output Library). I'm open to better name suggestions :)

The API is in no way final. I will change it as issues arise in the future.

I have a prototype version of ls that uses the API to output JSON. There are still some issues to resolve but the modified ls is basically working.
The code is accessible in the GSoC 2014 repository:
https://socsvn.freebsd.org/socsvn/soc2014/zkorchev/

here are two examples:

ls /
["COPYRIGHT","bin","boot","dev","entropy","etc","home","lib","libexec","media","mnt","proc","rescue","root","sbin","sys","tmp","usr","var"]

ls -l /
[{"mode":"-r--r--r--","nlink":1,"user":"root","group":"root","size":6201,"time":"Jan 17 00:41","name":"COPYRIGHT"},{"mode":"drwxr-xr-x","nlink":2,"user":"root","group":"root","size":1024,"time":"Jan 17 00:40","name":"bin"},{"mode":"drwxr-xr-x","nlink":8,"user":"root","group":"root","size":1024,"time":"Mar 18 20:42","name":"boot"},{"mode":"dr-xr-xr-x","nlink":12,"user":"root","group":"root","size":512,"time":"May 23 15:22","name":"dev"},{"mode":"-rw-------","nlink":1,"user":"root","group":"root","size":4096,"time":"May 23 15:22","name":"entropy"},{"mode":"drwxr-xr-x","nlink":21,"user":"root","group":"root","size":2048,"time":"May 22 18:51","name":"etc"},{"mode":"lrwxr-xr-x","nlink":1,"user":"root","group":"root","size":8,"time":"Mar 18 17:37","name":"home","link":"usr/home"},{"mode":"drwxr-xr-x","nlink":3,"user":"root","group":"root","size":1536,"time":"Jan 17 00:40","name":"lib"},{"mode":"drwxr-xr-x","nlink":3,"user":"root","group":"root","size":512,"time":"Mar 18 17:28","name":"libexec"},{"mode":"drwxr-xr-x","nlink":2,"user":"root","group":"root","size":512,"time":"Jan 17 00:39","name":"media"},{"mode":"drwxr-xr-x","nlink":2,"user":"root","group":"root","size":512,"time":"Jan 17 00:39","name":"mnt"},{"mode":"dr-xr-xr-x","nlink":2,"user":"root","group":"root","size":512,"time":"Jan 17 00:39","name":"proc"},{"mode":"drwxr-xr-x","nlink":2,"user":"root","group":"root","size":2560,"time":"Jan 17 00:40","name":"rescue"},{"mode":"drwxr-xr-x","nlink":7,"user":"root","group":"root","size":512,"time":"May 23 17:53","name":"root"},{"mode":"drwxr-xr-x","nlink":2,"user":"root","group":"root","size":2560,"time":"Jan 17 00:41","name":"sbin"},{"mode":"lrwxr-xr-x","nlink":1,"user":"root","group":"root","size":11,"time":"Jan 17 00:42","name":"sys","link":"usr/src/sys"},{"mode":"drwxrwxrwt","nlink":6,"user":"root","group":"root","size":512,"time":"May 23 17:51","name":"tmp"},{"mode":"drwxr-xr-x","nlink":17,"user":"root","group":"root","size":512,"time":"Mar 18 17:37","name":"usr"},{"mode":"drwxr-xr-x","nlink":24,"user":"root","group":"root","size":512,"time":"May 23 15:22","name":"var"}]

As I implemented this example modified version of ls, I got some ideas about where problems can arise in the future and I got some insight on how I can approach to solve them.


Zaro

home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8D1B686D-1AAA-4E07-9270-E42699110561>