[19] in arla-drinkers
Re: sl/roken and parsing ramblings
daemon@ATHENA.MIT.EDU (Love)
Sun Jun 21 16:52:19 1998
From arla-drinkers-request@sundance.stacken.kth.se Sun Jun 21 20:52:18 1998
Return-Path: <arla-drinkers-request@sundance.stacken.kth.se>
Delivered-To: arla-drinkers-mtg@bloom-picayune.mit.edu
Received: (qmail 17232 invoked from network); 21 Jun 1998 20:52:16 -0000
Received: from unknown (HELO sundance.stacken.kth.se) (130.237.234.41)
by bloom-picayune.mit.edu with SMTP; 21 Jun 1998 20:52:16 -0000
Received: from elixir.e.kth.se (sendmail@elixir.e.kth.se [130.237.48.5])
by sundance.stacken.kth.se (8.8.8/8.8.8) with ESMTP id WAA02008
for <arla-drinkers@stacken.kth.se>; Sun, 21 Jun 1998 22:47:36 +0200 (MET DST)
Received: from zafir.e.kth.se (zafir.e.kth.se [130.237.48.6])
by elixir.e.kth.se (8.8.7/8.8.7) with ESMTP id WAA13752;
Sun, 21 Jun 1998 22:47:35 +0200 (MET DST)
Received: (e96_lho@localhost) by zafir.e.kth.se (8.8.7/8.6.6) id WAA10025; Sun, 21 Jun 1998 22:47:33 +0200 (MET DST)
From: Love <lha@stacken.kth.se>
To: John Hawkinson <jhawk@mit.edu>
Cc: arla-drinkers@stacken.kth.se
Subject: Re: sl/roken and parsing ramblings
References: <199806210842.EAA25109@mary-kay-commandos.MIT.EDU>
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Date: 21 Jun 1998 22:47:33 +0200
In-Reply-To: John Hawkinson's message of Sun, 21 Jun 1998 04:42:55 -0400
Message-ID: <yxb2af765voa.fsf@zafir.e.kth.se>
Lines: 210
X-Mailer: Gnus v5.5/Emacs 20.2
John Hawkinson <jhawk@MIT.EDU> writes:
> What does sl stand for?
This is that everstanding questing that everyone ask
Assar and Joda...
(I didn't write it, I just stole it from kth-krb)
> There's an inconsistency in the way sl_command() handles return
> values versus the way fs (et al) do so.
>
> If sl_command returns -1 (should be a constant, proably), fs will
> print out "$argv1: Unknown command".
>
> But various fs commands return -1 to signal
> invalid usage syntaxes.
This is just wrong. 0 means ``ok dont complain'', everything else
means ``go and die''. Like in sl_loop(). Now I added -1 == bad command.
> So probably the interface for sl_command() should be defined a little
> more clearly and the routines called by sl_command() should return
> SL_BADSYNTAX (-2?) instead of SL_BADCOMMAND (-1). Or something.
Index: sl.c
===================================================================
RCS file: /usr/local/cvsroot/arla/lib/sl/sl.c,v
retrieving revision 1.2
diff -u -w -u -w -r1.2 sl.c
--- sl.c 1998/03/31 12:07:00 1.2
+++ sl.c 1998/06/21 20:12:44
@@ -232,7 +232,7 @@
SL_cmd *c;
c = sl_match (cmds, argv[0], 0);
if (c == NULL)
- return -1;
+ return SL_BADCOMMAND;
return (*c->func)(argc, argv);
}
Index: sl.h
===================================================================
RCS file: /usr/local/cvsroot/arla/lib/sl/sl.h,v
retrieving revision 1.1
diff -u -w -u -w -r1.1 sl.h
--- sl.h 1998/01/13 19:33:51 1.1
+++ sl.h 1998/06/21 20:12:44
@@ -41,6 +41,8 @@
#ifndef _SL_H
#define _SL_H
+#define SL_BADCOMMAND -1
+
typedef int (*cmd_func)(int, char **);
struct sl_cmd {
Index: fs.c
===================================================================
RCS file: /usr/local/cvsroot/arla/appl/fs.c,v
retrieving revision 1.33
diff -u -w -u -w -r1.33 fs.c
--- fs.c 1998/05/24 15:40:00 1.33
+++ fs.c 1998/06/21 20:28:19
@@ -42,7 +42,7 @@
#include <kafs.h>
#include "fs_local.h"
-RCSID("$Id$");
+RCSID("$Id: fs.c,v 1.33 1998/05/24 15:40:00 lha Exp $");
static SL_cmd cmds[] = {
{"apropos", empty_cmd, "locate commands by keyword"},
@@ -116,7 +116,7 @@
if (argc > 1) {
ret = sl_command(cmds, argc - 1, argv + 1);
- if (ret == -1)
+ if (ret == SL_BADCOMMAND)
printf ("%s: Unknown command\n", argv[1]);
}
else {
@@ -605,7 +605,7 @@
if (argc == 0) {
printf ("fs: Required parameter '-dir' missing\n");
- return -1;
+ return 0;
}
for (i = 0; i < argc; i++)
@@ -632,7 +632,7 @@
if (argc != 1 && argc != 4) {
setcache_usage();
- return -1;
+ return 0;
}
if (argc == 4) {
@@ -686,7 +686,7 @@
if (argc == 0) {
printf ("fs: Required parameter '-dir' missing\n");
- return -1;
+ return 0;
}
for (i = 0; i < argc; i++)
@@ -817,7 +817,7 @@
printf ("version: extraneous arguments ignored\n");
printf("fs: %s\nfs_lib: %s\n",
- "$Id$",
+ "$Id: fs.c,v 1.33 1998/05/24 15:40:00 lha Exp $",
fslib_version());
return 0;
}
@@ -1335,7 +1335,7 @@
if (k_pioctl(NULL, VIOCSETCACHESIZE, &a_params, 0) == -1) {
fserr(PROGNAME, errno, ".");
- return -1;
+ return 0;
}
return 0;
}
Index: pts.c
===================================================================
RCS file: /usr/local/cvsroot/arla/appl/pts.c,v
retrieving revision 1.4
diff -u -w -u -w -r1.4 pts.c
--- pts.c 1998/05/12 16:08:45 1.4
+++ pts.c 1998/06/21 20:32:24
@@ -44,7 +44,7 @@
#include <kafs.h>
#include <ctype.h>
-RCSID("$Id$");
+RCSID("$Id: pts.c,v 1.4 1998/05/12 16:08:45 hin Exp $");
static int empty_cmd(int, char **);
@@ -132,7 +132,7 @@
noauth);
if (connptdb == NULL)
- return -1;
+ return 0;
error = PR_DumpEntry(connptdb, 0, (struct prdebugentry *) &header);
@@ -140,7 +140,7 @@
printf("dump_cmd: DumpEntry failed with: %s (%d)\n",
koerr_gettext(error),
error);
- return -1;
+ return 0;
}
for (pos = header.headerSize; pos < header.eofPtr; pos += sizeof (struct prdebugentry)) {
> [ about sl_help and it's bloatiness ]
>
> I guess vos is the experiment for sl_help() to see how it's working?
>
I was lazy and didn't want to write a new sl_help() that is more
interactive mode.
And yes you are right, its not friendly/pretty they way vos looks today.
sl_help() has a lot of heritage from mandoc generation. Guess I have
to clean up the sl_help() and make it more pretty.
> because __progname isn't initialized:
>
> p = strrchr(__progname, '/');
>
> Of course, under Solaris, it will work with:
>
> > ( setenv LD_PRELOAD 0@0.so.1 ; setenv SLMANDOC 1 ; ./vos help )
>
> but you didn't want to know that, I think :-)
What ? I'm not really sure I don't know what that mean.
> ...fixes things, but again it's not clear whether this really belongs
> in sl_command(), a hypothetical sl_init() function, in vos' main(),
> etc., etc.
All program that uses libroken should call set_progname(argv[0]);
or equivalent since this fixes __progname for those that don't have
__progname (if you happend to have __progname this does nothing).
> I'm unhappy with the choice of __progname, since __ is reserved for
> the operating system's private stuff, and we shouldn't be poking at it.
> It looks like the sl/roken stuff comes from kth-krb (if not other places),
> so maybe it's hard to change and there's a lot of version skew?
sl/roken comes from kth-krb. There should not be that much of version
skew (but i have not diffed it against the lastest roken)
Love