new directory

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1040 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1996-11-17 23:48:51 +00:00
parent 4b5aeca704
commit 70bb7de493
4 changed files with 324 additions and 0 deletions

82
lib/sl/Makefile.in Normal file
View File

@@ -0,0 +1,82 @@
#
# $Id$
#
SHELL = /bin/sh
srcdir = @srcdir@
VPATH = @srcdir@
CC = @CC@
AR = ar
RANLIB = @RANLIB@
DEFS = @DEFS@
CFLAGS = @CFLAGS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
MKINSTALLDIRS = @top_srcdir@/mkinstalldirs
prefix = @prefix@
exec_prefix = $(prefix)
libdir = $(exec_prefix)/lib
PICFLAGS = @PICFLAGS@
LIBNAME = libsl
LIBEXT = @LIBEXT@
SHLIBEXT = @SHLIBEXT@
SHARED = @SHARED@
LIB = $(LIBNAME).$(LIBEXT)
PROGS =
LIB_SOURCES = sl.c
SOURCES = $(LIB_SOURCES)
LIB_OBJECTS = sl.o
OBJECTS = $(LIB_OBJECTS)
all: $(LIB) $(PROGS)
Wall:
make CFLAGS="-g -Wall -Wno-comment -Wmissing-prototypes -Wmissing-declarations -D__USE_FIXED_PROTOTYPES__"
.c.o:
$(CC) -c $(CPPFLAGS) $(DEFS) -I../.. -I../../include -I$(srcdir) -I$(srcdir)/../des $(CFLAGS) $(PICFLAGS) $<
install: all
$(MKINSTALLDIRS) $(libdir)
$(INSTALL) -m 0555 $(LIB) $(libdir)
uninstall:
TAGS: $(SOURCES)
etags $(SOURCES)
check:
clean:
rm -f $(LIB) $(PROGS) *.o *.a
mostlyclean: clean
distclean: clean
rm -f Makefile *~
realclean: distclean
rm -f TAGS
$(LIBNAME).a: $(LIB_OBJECTS)
rm -f $@
$(AR) cr $@ $(LIB_OBJECTS)
-$(RANLIB) $@
$(LIBNAME).$(SHLIBEXT): $(LIB_OBJECTS)
rm -f $@
$(CC) $(CFLAGS) $(PICFLAGS) $(SHARED) -o $@ $(LIB_OBJECTS)
$(OBJECTS): ../../config.h
.PHONY: all install uninstall check clean mostlyclean distclean realclean

137
lib/sl/sl.c Normal file
View File

@@ -0,0 +1,137 @@
/*
* Copyright (c) 1995, 1996 Kungliga Tekniska H<>gskolan (Royal Institute
* of Technology, Stockholm, Sweden).
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the Kungliga Tekniska
* H<>gskolan and its contributors.
*
* 4. Neither the name of the Institute nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
RCSID("$Id$");
#endif
#include "sl_locl.h"
static SL_cmd *
sl_match (SL_cmd *cmds, char *cmd, int exactp)
{
SL_cmd *c, *current = NULL, *partial_cmd;
int partial_match = 0;
for (c = cmds; c->name; ++c) {
if (c->func)
current = c;
if (strcmp (cmd, c->name) == 0)
return current;
else if (strncmp (cmd, c->name, strlen(cmd)) == 0 &&
partial_cmd != current) {
++partial_match;
partial_cmd = current;
}
}
if (partial_match == 1 && !exactp)
return partial_cmd;
else
return NULL;
}
void
sl_help (SL_cmd *cmds, int argc, char **argv)
{
SL_cmd *c;
if (argc == 1) {
for (c = cmds; c->name; ++c)
printf ("%s\t%s\n", c->name, c->usage ? c->usage : "");
} else {
c = sl_match (cmds, argv[1], 0);
if (c == NULL)
printf ("No such command: %s. Try \"help\" for a list of all commands\n",
argv[1]);
else {
printf ("%s\t%s", c->name, c->usage);
if((++c)->name && c->func == NULL) {
printf ("\nSynonyms:");
while (c->name && c->func == NULL)
printf ("\t%s", (c++)->name);
}
printf ("\n");
}
}
}
int
sl_loop (SL_cmd *cmds, char *prompt)
{
char buf[BUFSIZ];
int count;
char *ptr[17];
int i;
for (;;) {
char *p;
char **a = ptr;
SL_cmd *c;
printf ("%s", prompt);
fflush (stdout);
if(fgets (buf, sizeof(buf), stdin) == NULL)
break;
if (buf[strlen(buf) - 1] == '\n')
buf[strlen(buf) - 1] = '\0';
p = buf;
count = 0;
for (;;) {
while (*p == ' ' || *p == '\t')
p++;
if (*p == '\0')
break;
*a++ = p;
++count;
while (*p != '\0' && *p != ' ' && *p != '\t')
p++;
if (*p == '\0')
break;
*p++ = '\0';
}
c = sl_match (cmds, ptr[0], 0);
if (c)
(*c->func)(count, ptr);
else
printf ("Unrecognized command: %s\n", ptr[0]);
}
return 0;
}

58
lib/sl/sl.h Normal file
View File

@@ -0,0 +1,58 @@
/*
* Copyright (c) 1995, 1996 Kungliga Tekniska H<>gskolan (Royal Institute
* of Technology, Stockholm, Sweden).
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the Kungliga Tekniska
* H<>gskolan and its contributors.
*
* 4. Neither the name of the Institute nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/* $Id$ */
#ifndef _SL_H
#define _SL_H
typedef void (*cmd_func)(int, char **);
struct sl_cmd {
char *name;
cmd_func func;
char *usage;
char *help;
};
typedef struct sl_cmd SL_cmd;
void sl_help (SL_cmd *, int argc, char **argv);
int sl_loop (SL_cmd *, char *prompt);
#endif /* _SL_H */

47
lib/sl/sl_locl.h Normal file
View File

@@ -0,0 +1,47 @@
/*
* Copyright (c) 1995, 1996 Kungliga Tekniska H<>gskolan (Royal Institute
* of Technology, Stockholm, Sweden).
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the Kungliga Tekniska
* H<>gskolan and its contributors.
*
* 4. Neither the name of the Institute nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/* $Id$ */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <protos.h>
#include <sl.h>