[Machine readable output from userland utilities] report

Zaro Korchev zkorchev at mail.bg
Sun May 25 23:09:29 UTC 2014


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


More information about the soc-status mailing list