[27762] in Source-Commits

home help back first fref pref prev next nref lref last post

athinfod commit: Removed C athinfod

daemon@ATHENA.MIT.EDU (Jonathan D Reed)
Tue Mar 4 12:07:17 2014

Date: Tue, 4 Mar 2014 12:07:09 -0500
From: Jonathan D Reed <jdreed@MIT.EDU>
Message-Id: <201403041707.s24H79gP023792@drugstore.mit.edu>
To: source-commits@MIT.EDU

https://github.com/mit-athena/athinfod/commit/3b7e631301d6513c27c6145953ae5c41c797513f
commit 3b7e631301d6513c27c6145953ae5c41c797513f
Author: Kristen A Sunter <k_sunter@mit.edu>
Date:   Sat Sep 7 20:37:33 2013 -0400

    Removed C athinfod
    
    Removed athinfod.c and supporting build infrastructure.

 Makefile.in  |   45 --------
 athinfod.c   |  324 ----------------------------------------------------------
 configure.in |   12 --
 3 files changed, 0 insertions(+), 381 deletions(-)

diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644
index 2f7cc7b..0000000
--- a/Makefile.in
+++ /dev/null
@@ -1,45 +0,0 @@
-# $Id: Makefile.in,v 1.3 1999-10-19 20:22:56 danw Exp $
-
-SHELL=/bin/sh
-VPATH=@srcdir@
-INSTALL=@INSTALL@
-INSTALL_PROGRAM=@INSTALL_PROGRAM@
-srcdir=@srcdir@
-top_srcdir=@top_srcdir@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-lsbindir=@lsbindir@
-mandir=@mandir@
-
-CC=@CC@
-DEFS=@DEFS@
-CPPFLAGS=@CPPFLAGS@
-CFLAGS=@CFLAGS@ ${WARN_CFLAGS} ${ERROR_CFLAGS}
-LDFLAGS=@LDFLAGS@
-LIBS=@LIBS@
-ALL_CFLAGS=${CPPFLAGS} ${CFLAGS} ${DEFS}
-
-all: athinfod
-
-athinfod: athinfod.o
-	${CC} ${LDFLAGS} -o athinfod athinfod.o ${LIBS}
-
-.c.o:
-	${CC} -c ${ALL_CFLAGS} $<
-
-check:
-
-install:
-	${top_srcdir}/mkinstalldirs ${DESTDIR}${lsbindir}
-	${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man5
-	${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
-	${INSTALL_PROGRAM} athinfod ${DESTDIR}${lsbindir}
-	${INSTALL} -m 444 ${srcdir}/athinfo.defs.5 ${DESTDIR}${mandir}/man5
-	${INSTALL} -m 444 ${srcdir}/athinfo.access.5 ${DESTDIR}${mandir}/man5
-	${INSTALL} -m 444 ${srcdir}/athinfod.8 ${DESTDIR}${mandir}/man8
-
-clean:
-	rm -f athinfod.o athinfod
-
-distclean: clean
-	rm -f config.cache config.log config.status Makefile
diff --git a/athinfod.c b/athinfod.c
deleted file mode 100644
index 11d7a72..0000000
--- a/athinfod.c
+++ /dev/null
@@ -1,324 +0,0 @@
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- */
-
-static const char rcsid[] = "$Id: athinfod.c,v 1.3 1999-10-19 20:22:56 danw Exp $";
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/socket.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <dirent.h>
-#include <fnmatch.h>
-#include <errno.h>
-
-#define PATH_ATHINFO_DEFS "/etc/athena/athinfo.defs"
-#define PATH_ATHINFO_ACCESS "/etc/athena/athinfo.access"
-#define PATH_ATHINFO_DEFS_D "/etc/athena/athinfo.defs.d"
-#define ATHINFO_DEFS_D_WILDCARD "*.defs" /* Files to be read in defs.d */
-
-static const char *read_query(void);
-static void shutdown_input(void);
-static const char *get_definition(const char *query);
-static void check_enabled(const char *query);
-static int first_field_matches(const char *s, const char *word);
-static const char *skip_spaces(const char *p);
-static const char *skip_nonspaces(const char *p);
-static int read_line(FILE *fp, char **buf, int *bufsize);
-static void *emalloc(size_t size);
-static void *erealloc(void *ptr, size_t size);
-
-int main(int argc, char **argv)
-{
-  const char *query, *cmd;
-
-  query = read_query();
-  shutdown_input();
-  cmd = get_definition(query);
-  check_enabled(query);
-  execl("/bin/sh", "sh", "-c", cmd, (char *) NULL);
-  fprintf(stderr, "athinfod: cannot run shell, aborting.\n");
-  return 1;
-}
-
-/* Read the query from stdin and validate it. */
-static const char *read_query(void)
-{
-  char *line = NULL;
-  int linesize;
-  const char *p;
-
-  if (read_line(stdin, &line, &linesize) != 0)
-    {
-      fprintf(stderr, "athinfod: couldn't read query.\n");
-      exit(0);
-    }
-
-  /* Make sure the query consists of printable nonspace characters. */
-  for (p = line; *p; p++)
-    {
-      if (!isprint((unsigned char)*p) || isspace((unsigned char)*p))
-	{
-	  fprintf(stderr, "athinfod: invalid query.\n");
-	  exit(0);
-	}
-    }
-  return line;
-}
-
-/* Shut down the input side of the inetd socket and repoint stdin at
- * /dev/null.  This eliminates the possibility of malicious input
- * affecting the commands we execute.
- */
-static void shutdown_input(void)
-{
-  int fd;
-
-  shutdown(STDIN_FILENO, 0);
-  close(STDIN_FILENO);
-  fd = open("/dev/null", O_RDONLY);
-  if (fd == -1)
-    {
-      fprintf(stderr, "athinfod: cannot open /dev/null, aborting.\n");
-      exit(1);
-    }
-  if (fd != STDIN_FILENO)
-    {
-      dup2(fd, STDIN_FILENO);
-      close(fd);
-    }
-}
-
-/* Read the definition of query from the specified file. */
-static const char *get_definition_from_file(const char *query,
-					    const char *filepath)
-{
-  char *line = NULL;
-  int linesize;
-  FILE *fp;
-
-  fp = fopen(filepath, "r");
-  if (!fp)
-    {
-      fprintf(stderr,
-	      "athinfod: cannot open %s (%s), aborting.\n", filepath, strerror(errno));
-      exit(1);
-    }
-
-  while (read_line(fp, &line, &linesize) == 0)
-    {
-      /* Ignore comment lines. */
-      if (*line == '#')
-	continue;
-
-      if (first_field_matches(line, query))
-	{
-	  fclose(fp);
-	  return skip_spaces(skip_nonspaces(line));
-	}
-    }
-
-  fclose(fp);
-  return NULL;
-}
-
-static int defs_file_filter(const struct dirent *entry) 
-{
-  return fnmatch(ATHINFO_DEFS_D_WILDCARD, entry->d_name, 0) == 0;
-}
-
-static const char *get_definition(const char *query)
-{
-  const char *definition;
-  definition = get_definition_from_file(query, PATH_ATHINFO_DEFS);
-  if (definition != NULL)
-    return definition;
-  
-  struct dirent **namelist;
-  int numfiles, i;
-  numfiles = scandir(PATH_ATHINFO_DEFS_D, &namelist, 
-	      defs_file_filter, alphasort);
-  if (numfiles < 0) {
-    if (errno != ENOENT) {
-      fprintf(stderr, "athinfod: %s while scanning %s.\n", 
-	      strerror(errno), PATH_ATHINFO_DEFS_D);
-      exit(1);
-    }
-  } else {
-    for (i = 0; i < numfiles; i++) {
-      int len;
-      char path[PATH_MAX];
-      len = snprintf(path, sizeof(path), "%s/%s", PATH_ATHINFO_DEFS_D,
-		     namelist[i]->d_name);
-      if (len < 0 || len >= (int)sizeof(path))
-	/* Should we print an error here?  I don't think so. */
-	continue;
-      definition = get_definition_from_file(query, path);
-      if (definition != NULL)
-	break;
-    }
-  }
-
-  for (i = 0; i < numfiles; i++)
-    free(namelist[i]);
-  free(namelist);
-
-  if (definition != NULL)
-    return definition;
-  fprintf(stderr, "athinfod: unrecognized query.\n");
-  exit(0);
-}
-
-/* See if this command is enabled. */
-static void check_enabled(const char *query)
-{
-  char *line = NULL;
-  int linesize, enabled = 0, val;
-  FILE *fp;
-  const char *p;
-
-  fp = fopen(PATH_ATHINFO_ACCESS, "r");
-  if (!fp)
-    {
-      fprintf(stderr,
-	      "athinfod: cannot open athinfo access file, aborting.\n");
-      exit(1);
-    }
-
-  while (read_line(fp, &line, &linesize) == 0)
-    {
-      /* Only pay attention to lines starting with "enable" or "disable". */
-      if (first_field_matches(line, "enable"))
-	val = 1;
-      else if (first_field_matches(line, "disable"))
-	val = 0;
-      else
-	continue;
-
-      /* If we find an exact match, stop.  If we find a glob match,
-       * accept that value for now but hold out for an exact match.
-       * (This means if there are conflicting lines in the config
-       * file, we take the first exact match but the last glob match.
-       * Oh well.)
-       */
-      p = skip_spaces(skip_nonspaces(line));
-      if (first_field_matches(p, query))
-	{
-	  enabled = val;
-	  break;
-	}
-      else if (first_field_matches(p, "*"))
-	enabled = val;
-    }
-
-  fclose(fp);
-  free(line);
-  if (!enabled)
-    {
-      fprintf(stderr, "athinfod: query disabled.\n");
-      exit(0);
-    }
-}
-
-static int first_field_matches(const char *s, const char *word)
-{
-  int len = strlen(word);
-
-  return (strncasecmp(s, word, len) == 0 &&
-	  (isspace((unsigned char)s[len]) || !s[len]));
-}
-
-static const char *skip_spaces(const char *p)
-{
-  while (isspace((unsigned char)*p))
-    p++;
-  return p;
-}
-
-static const char *skip_nonspaces(const char *p)
-{
-  while (*p && !isspace((unsigned char)*p))
-    p++;
-  return p;
-}
-
-/* Read a line from a file into a dynamically allocated buffer,
- * zeroing the trailing newline if there is one.  The calling routine
- * may call read_line multiple times with the same buf and bufsize
- * pointers; *buf will be reallocated and *bufsize adjusted as
- * appropriate.  The initial value of *buf should be NULL.  After the
- * calling routine is done reading lines, it should free *buf.  This
- * function returns 0 if a line was successfully read, 1 if the file
- * ended, and -1 if there was an I/O error.
- */
-static int read_line(FILE *fp, char **buf, int *bufsize)
-{
-  char *newbuf;
-  int offset = 0, len;
-
-  if (*buf == NULL)
-    {
-      *buf = emalloc(128);
-      *bufsize = 128;
-    }
-
-  while (1)
-    {
-      if (!fgets(*buf + offset, *bufsize - offset, fp))
-	return (offset != 0) ? 0 : (ferror(fp)) ? -1 : 1;
-      len = offset + strlen(*buf + offset);
-      if ((*buf)[len - 1] == '\n')
-	{
-	  (*buf)[len - 1] = 0;
-	  if (len > 1 && (*buf)[len - 2] == '\r')
-	    (*buf)[len - 2] = 0;
-	  return 0;
-	}
-      offset = len;
-
-      /* Allocate more space. */
-      newbuf = erealloc(*buf, *bufsize * 2);
-      *buf = newbuf;
-      *bufsize *= 2;
-    }
-}
-
-static void *emalloc(size_t size)
-{
-  void *ptr;
-
-  ptr = malloc(size);
-  if (!ptr)
-    {
-      fprintf(stderr, "athinfod: malloc failure, aborting.\n");
-      exit(1);
-    }
-  return ptr;
-}
-
-void *erealloc(void *ptr, size_t size)
-{
-  ptr = realloc(ptr, size);
-  if (!ptr)
-    {
-      fprintf(stderr, "athinfod: realloc failure, aborting.\n");
-      exit(1);
-    }
-  return ptr;
-}
diff --git a/configure.in b/configure.in
deleted file mode 100644
index 6bc1103..0000000
--- a/configure.in
+++ /dev/null
@@ -1,12 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(athinfod.c)
-
-test -z "$lsbindir" && lsbindir='${sbindir}'
-AC_SUBST(lsbindir)
-
-AC_PROG_CC
-AC_PROG_INSTALL
-
-AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket))
-
-AC_OUTPUT(Makefile)

home help back first fref pref prev next nref lref last post