#Include <hallo.h> As i need "some more" filters (>500), i added a paramter for the contrib/tftp to accept a whole directory of filter-scripts. - begin - diff -Nur etherboot-4.6.1-vanilla/contrib/tftp/tftpd.8 etherboot-4.6.1-patched/contrib/tftp/tftpd.8 --- etherboot-4.6.1-vanilla/contrib/tftp/tftpd.8 Tue Apr 25 12:22:07 2000 +++ etherboot-4.6.1-patched/contrib/tftp/tftpd.8 Mon May 22 23:50:31 2000 @@ -27,7 +27,9 @@ .SM \-d ] [ .SM \-r -<filter> ] +<filter> ] [ +.SM \-w +<wrapperdir> ] .SH DESCRIPTION .I Tftpd is a server which supports the DARPA Trivial File Transfer @@ -71,5 +73,10 @@ a client tries to download this file, the filter will be started and its output is send to the client. An arbitrary amount of these filters can be specified. +.TP +.B \-w +Pathname of a directory of files that are considered to be filter programs. +Whenever a client tries to download one of this files, the filter will be +started and its output is send to the client. .SH "SEE ALSO" tftp(1), inetd(8) diff -Nur etherboot-4.6.1-vanilla/contrib/tftp/tftpd.c etherboot-4.6.1-patched/contrib/tftp/tftpd.c --- etherboot-4.6.1-vanilla/contrib/tftp/tftpd.c Tue Apr 25 12:22:12 2000 +++ etherboot-4.6.1-patched/contrib/tftp/tftpd.c Mon May 22 23:46:54 2000 @@ -81,6 +81,7 @@ int fromlen; char *rootdir = NULL; +char *wrapperdir = NULL; int debug = 0; struct filters { @@ -100,7 +101,7 @@ openlog(argv[0], LOG_PID, LOG_DAEMON); - while ((n = getopt(argc, argv, "c:dr:")) >= 0) { + while ((n = getopt(argc, argv, "c:dr:w:")) >= 0) { switch (n) { case 'c': if (rootdir) @@ -119,10 +120,15 @@ strcpy(fp->fname, optarg); filters = fp; break; } + case 'w': + if (wrapperdir) + goto usage; + wrapperdir = optarg; + break; default: usage: syslog(LOG_ERR, "Usage: %s [-c chroot] " - "[-r readfilter] [-d]\n", + "[-r readfilter] [-d] [-w wrapperdir]\n", argv[0]); exit(1); } @@ -430,6 +436,18 @@ isfilter = 1; return (0); } + } + if (strncmp (wrapperdir,filename,strlen(wrapperdir)) == 0) { + if (debug) + syslog(LOG_INFO, "Opening input " + "filter: %s\n", filename); + if ((file = popen(filename, "r")) == NULL) { + syslog(LOG_ERR, "Failed to open input " + "filter\n"); + return (EACCESS); } + fd = fileno(file); + isfilter = 1; + return (0); } } - end - Bis denn -- Real Programmers consider "what you see is what you get" to be just as bad a concept in Text Editors as it is in women. No, the Real Programmer wants a "you asked for it, you got it" text editor -- complicated, cryptic, powerful, unforgiving, dangerous. =========================================================================== This Mail was sent to netboot mailing list by: Matthias Schniedermeyer <ms@citd.de> To get help about this list, send a mail with 'help' as the only string in it's body to majordomo@baghira.han.de. If you have problems with this list, send a mail to netboot-owner@baghira.han.de.
For requests or suggestions regarding this mailing list archive please write to netboot@gkminix.han.de.