Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!wuarchive!zaphod.mps.ohio-state.edu!rpi!uupsi!cmcl2!adm!news From: IN% Postmaster@VAX1.Mankato.MSUS.EDU %MKVAX1.DECNET@msus1.bitnet (PMDF Mail Server) Newsgroups: comp.unix.wizards Subject: Undeliverable mail: SMTP delivery failure Message-ID: <26015@adm.brl.mil> Date: 14 Feb 91 20:05:59 GMT Sender: news@adm.brl.mil Lines: 611 Return-path: Date: Thu, 14 Feb 1991 13:43 CST From: PMDF Mail Server Subject: Undeliverable mail: SMTP delivery failure To: "MSUS1::IN%\"UNIX-WIZARDS@BRL.MIL\""@VAX1.Mankato.MSUS.EDU Message-id: <8A67D160E020493A@VAX1.Mankato.MSUS.EDU> The message could not be delivered to: Addressee: BD6@MKATT1.MANKATO.MSUS.EDU Reason: Illegal host/domain name found. ---------------------------------------- Received: from DECNET-MAIL by VAX1.Mankato.MSUS.EDU with PMDF#10000; Thu, 14 Feb 1991 13:42 CST Date: Thu, 14 Feb 1991 13:42 CST From: "MSUS1::IN%\"UNIX-WIZARDS@BRL.MIL\""@VAX1.Mankato.MSUS.EDU Subject: UNIX-WIZARDS Digest V12#017 To: BD6@MKATT1.MANKATO.MSUS.EDU Message-id: <8A4D515220205736@VAX1.Mankato.MSUS.EDU> X-VMS-To: "Brian D. Goecke" Return-path: Received: from NDSUVM1.BITNET (MAILER@NDSUVM1) by MSUS1.MSUS.EDU with PMDF#10130; Wed, 13 Feb 1991 05:36 CST Received: by NDSUVM1 (Mailer R2.07) id 6288; Wed, 13 Feb 91 05:32:49 CST Date: Wed, 13 Feb 91 05:45:03 EST From: Mike Muuss The Moderator Subject: UNIX-WIZARDS Digest V12#017 Sender: Unix-Wizards Mailing List To: "Brian D. Goecke" Reply-to: UNIX-WIZARDS@BRL.MIL Message-id: <7D22E427A00023E4@MSUS1.MSUS.EDU> X-To: UNIX-WIZARDS@BRL.MIL UNIX-WIZARDS Digest Wed, 13 Feb 1991 V12#017 Today's Topics: Re: Question:Books on Unix mailing-list demon Re: mailing-list demon Comer's TCP/IP books (was: Re: Wizard-level questions) Re: dup2 Csh hacking -- having problems... How to read v6 distribution tapes? Interprocess Communication question ----------------------------------------------------------------- From: "John G. Kissane" Subject: Re: Question:Books on Unix Date: 23 Jan 91 12:44:30 GMT To: unix-wizards@sem.brl.mil In article <11425@darkstar.ucsc.edu> googol@ucscb.ucsc.edu (60778000) writes: > >Hi! Could anyone recommend some books on Unix related to the following >topics: Unix Kernel, Shell Programming, Unix Utilities . Is there >any single book that talks about all these topics ? thanks. I suggest that you take a look at O'Reilly & Associates. They have several excellent books on a large number of UNIX topics. They can be reached via e-mail at the following address: ora!nuts Good Luck. -- -- John Kissane, Mahon Industrial Estate, Motorola Ireland Ltd. Blackrock, Cork, Ireland. ...!uunet!motcid!kissane +353-21-357-101 ----------------------------- From: Vance Heron Subject: Re: Question:Books on Unix Date: 23 Jan 91 21:29:53 GMT Sender: news@jato.jpl.nasa.gov Nntp-Posting-Host: mars.jpl.nasa.gov To: unix-wizards@sem.brl.mil In article <11425@darkstar.ucsc.edu> googol@ucscb.ucsc.edu (60778000) writes: > >Hi! Could anyone recommend some books on Unix related to the following >topics: Unix Kernel, Shell Programming, Unix Utilities . Is there >any single book that talks about all these topics ? thanks. For Shell programming and utilities, I can reccomend "Tricks of the Unix Masters" put out by the Waite group. ----------------------------- From: "Andreas C. Lemke" Subject: mailing-list demon Date: 12 Feb 91 13:59:43 GMT Sender: news Nntp-Posting-Host: newsigi.colorado.edu To: unix-wizards@sem.brl.mil Hi, I would like to create a mailing list with as little administrative effort for myself as possible. To that end *everybody* should be able to add, update, or remove people from the list, as well as obtain a listing of the current mail addresses on the list. This should be doable by mail, e.g., if a new person wanted to be added to the alias he/she would simply send a mail-message containing a command such as "add joe@abc.edu" and some sort of demon should carry out the command. Do you guys know of some software that filters incoming mail messages for commands and executes them? Thanks. .................. Andreas C. Lemke ... andreas ..:-). CS Dept., U. of Colorado, Boulder .................. andreas@cs.colorado.edu, (303) 492-1503 -- .................. Andreas C. Lemke ... andreas ..:-). CS Dept., U. of Colorado, Boulder .................. andreas@cs.colorado.edu, (303) 492-1503 ----------------------------- From: "Andreas C. Lemke" Subject: mailing-list demon Date: 12 Feb 91 15:19:03 GMT Sender: news Nntp-Posting-Host: newsigi.colorado.edu To: unix-wizards@sem.brl.mil Hi, I would like to create a mailing list with as little administrative effort for myself as possible. To that end *everybody* should be able to add, update, or remove people from the list, as well as obtain a listing of the current mail addresses on the list. This should be doable by mail, e.g., if a new person wanted to be added to the alias he/she would simply send a mail-message containing a command such as "add joe@abc.edu" and some sort of demon should carry out the command. Do you guys know of some software that filters incoming mail messages for commands and executes them? I'm thinking of something like a perl script to be installed as the alias for mailing-list-request. Thanks. -- .................. Andreas C. Lemke ... andreas ..:-). CS Dept., U. of Colorado, Boulder .................. andreas@cs.colorado.edu, (303) 492-1503 ----------------------------- From: "Gary Weimer (588-0953" MMDF-Warning: Parse error in original version of preceding line at BRL.MIL Subject: Re: mailing-list demon Date: 12 Feb 91 21:59:54 GMT Sender: news@ssd.kodak.com To: unix-wizards@sem.brl.mil I tried to reply, but my mailer couldn't find the host. In article , andreas@newsigi.us (Andreas C. Lemke) writes: |> Hi, |> |> I would like to create a mailing list with as little administrative |> effort for myself as possible. To that end *everybody* should be able |> to add, update, or remove people from the list, as well as obtain a |> listing of the current mail addresses on the list. This should be |> doable by mail, e.g., if a new person wanted to be added to the alias |> he/she would simply send a mail-message containing a command such as |> "add joe@abc.edu" and some sort of demon should carry out the command. |> |> Do you guys know of some software that filters incoming mail messages |> for commands and executes them? I'm thinking of something like a perl |> script to be installed as the alias for mailing-list-request. I don't know if this will help at all or not. It's not exactly what you asked for. This is something I wrote to sort my incomming mail. You can setup a special login id that this can be installed under, or use your own and require that a specific subject line be used. You'll need to understand grep and maybe awk to understand what I'm doing in the sort section of mailsort.csh. To tell the mail server to use mailsort.csh, I had to create a .forward file in my home directory (I'm using Unix, specifically SunOS): -------------- .forward file ------------------ "|/u/users1/weimer/bin/mailsort.csh weimer ~/MAIL" -------------- end .forward file ------------------ The mailsort.csh program follows. If you would like more explanation, write back and ask (My .sig has a mail address which should work). ------------ mailsort.csh file ------------------ #!/bin/csh -fb # login id of person using this script # environment vars take precidence over defaults if (!($?USER)) set USER=weimer # mail directory of person using this script # environment vars take precidence over defaults # NOTE: USER will not be set when prog called by mail daemon if (!($?MAILDIR)) then if (-e ~$USER/MAIL) then set MAILDIR=~$USER/MAIL else set MAILDIR=~$USER/mail endif endif ################################################################### # NOTE: mail message will be saved in the file $MSG, # the mail header only will be saved in the file $HEADER # the mail body only will be saved in the file $BODY ################################################################### # mail header lines to skip when saving message # $MSG will still have these, $HEADER will not set HDRSKIP='$1=="Received:" || $1=="id" || $1=="Message-Id:"' #set HDRSKIP="" # arguments take precidence over defaults and environmen vars # NOTE: this is not important part of code logic (you can skip it) set PARAMS=($*) if ($#PARAMS > 1) then set USER=$PARAMS[1] set MAILDIR=$PARAMS[2] set TMP=`echo $MAILDIR|awk '{print index($1,"//")}'` if ($TMP == 1) set MAILDIR=~$USER`echo $MAILDIR|awk '{print substr($1,2)}'` else if ("$PARAMS" != "") then set $USER=$PARAMS if (-e ~$USER/MAIL) then set MAILDIR=~$USER/MAIL else set MAILDIR=~$USER/mail endif endif ####################################################################### # # generic setup stuff # ####################################################################### # date in case I want it for file names set DATE = `date +"%y-%m-%d"` # awk script for separating mail header from mail body set PARSER=('{if (b) {print $0>>bf;next}};{if (NF==0) {b=1;next}};{if (""'$HDRSKIP'){next}};{print $0>>hf};END{print>>bf;print>>hf}') # files for msg, header, & body set MSG="/tmp/$USER.mail.$$" set HEADER=$MSG.head set BODY=$MSG.body /bin/rm -f $HEADER $BODY $MSG # just in case we've found a duplicate name... # our mail server uses /usr/spool/mail, other machines mount this in /var if (-e /usr/spool/mail) then set MAILBOX=/usr/spool/mail/$USER else set MAILBOX=/var/spool/mail/$USER endif # stdin is the mail message being sent, put it in $MSG cat > $MSG # separate header and body awk "$PARSER" hf=$HEADER bf=$BODY $MSG while (1) #we really only go through loop once # this allows us to use break instead of goto ####################################################################### # # BEGIN SORTING # ####################################################################### ####################################################################### # if you do not want a message to be sent to yourself, and you do not # want it to match any other conditions, 'break' after sending message-- # DO NOT 'exit'--temporary files will not get removed ####################################################################### # when concatinating to a mailbox, you should always add a blank line # to the end of what you are concatinating (hence all the 'echo ""'s # below) ####################################################################### # # extra stuff just for me :-) # # intro to prepend to forwarded msg's (stating this has been auto-forwarded) set AUTOHDR=$MAILDIR/auto.header # flag for who a copy was sent to (put at end my copy of files auto-forwarded) set COPYHDR=$MAILDIR/copy.header # # template # #set SUBJECT=`grep '^Subject:.' $HEADER` #set TO=`grep '^To:.' $HEADER` #set OTHER=`grep '' $BODY` #if ("$" != "") then # we found a match # # do any other calculations/parsing here # # # save to a file # (cat $; echo "") >> $MAILDIR/ # # put in your own mailbox (as if we never did this script) # (cat $MSG; echo "") >> $MAILBOX # # forward to someone else # cat $ | /usr/ucb/Mail -s "" # # # run any programs, edit files, etc. that you want to here # break #endif # # Budtool Report # # simply write $MSG to appropriate file # set SUBJECT=`grep '^Subject:.Budtool.Report$' $HEADER` if ("$SUBJECT" != "") then # body of msg has machine name on line starting with 'rsh' set MACH=`grep '^rsh' $BODY | awk '{print $2; exit}'` # write mail to file (cat $MSG; echo "") >> $MAILDIR/backups/$MACH/$DATE break endif # # warehouse submissions -- cc: edj # set SUBJECT=`grep '^Subject:.wh.submission$' $HEADER` if ("$SUBJECT" != "") then (cat $AUTOHDR $HEADER $BODY) | /usr/ucb/Mail -s "wh submission" edj (cat $MSG $COPYHDR;echo "edj";echo "") >> $MAILBOX break endif # # test (see if any of this works...) # #set SUBJECT=`grep '^Subject:.test$' $HEADER` #if ("$SUBJECT" != "" ) then # (cat $HEADER; echo "test successful"; echo "") >> $MAILBOX # break #endif ####################################################################### # # No matches--Put in mailbox # ####################################################################### cat $MSG >> $MAILBOX echo "" >> $MAILBOX break #don't repeat while loop end /bin/rm -f $HEADER $BODY $MSG exit ------------ end mailsort.csh file ------------------ weimer@ssd.kodak.com ( Gary Weimer ) ----------------------------- From: Nick Dokos Subject: Comer's TCP/IP books (was: Re: Wizard-level questions) Date: 12 Feb 91 17:54:22 GMT Sender: news@osf.org To: unix-wizards@sem.brl.mil |> |> Of the list above, Comer was missing. The original poster asked something |> about networking. A text I have found invaluable is: |> |> Internetworking with TCP/IP: Principles, Protocols, and Architecture |> by Douglas Comer, (c) 1988, Prentice-Hall, ISBN 0-13-470154-2 |> |> It is well written and has answered the vast majority of my questions |> on networking. |> |> -- |> scott barman | There comes a time in everyone's existance |> scott@nbc1.ge.com | when actions speak louder than words. |> (This does not represent any | Just make sure your actions are louder |> opinions of NBC or affiliates) | than the next guy's! - Anonymous There is a second edition, expanded and improved: Internetworking with TCP/IP, Vol.1: Principles, Protocols and Architecture by Douglas E. Comer, (c) 1991, Prentice-Hall, ISBN 0-13-468505-9. The second volume was scheduled for last November, but as far as I know it is still not out. The blurb in the back of the first volume says: Internetworking with TCP/IP, Vol.2: Implementation and Internals by Douglas E.Comer and David L.Stevens. -- Nick Dokos (nick@osf.org) Systems Engineering OSF ----------------------------- From: Guy Harris Subject: Re: dup2 Date: 12 Feb 91 18:30:43 GMT To: unix-wizards@sem.brl.mil >Do you mean that V7 had dup2 but System V doesn't? Yes. For whatever reason, that particular branch of the family didn't have "dup2()"; it did, however, have "fcntl()" and the F_DUPFD subfunction thereof, at least as far back as S3 (I don't remember whether earlier members of that branch had it). S5R3 picked up "dup2()", which is in POSIX; 4.2BSD picked up "fcntl()", which is also in POSIX. >And what about systems that don't have fcntl? If you have neither "fcntl()" nor "dup2()", you're not dealing with a UNIX, or lookalike, that does a reasonable job of looking like a modern UNIX (it's not as modern as V7, even), in which case 1) you may have a problem if you need "dup2()"-like functionality (you might have to repeatedly "dup()" the file descriptor until it reaches the desired value, and then close all the intermediate descriptors) and 2) you probably have a bunch of other problems as well. ----------------------------- From: Chet Ramey Subject: Re: dup2 Date: 12 Feb 91 20:51:49 GMT Sender: news@usenet.ins.cwru.edu Nntp-Posting-Host: odin.ins.cwru.edu To: unix-wizards@sem.brl.mil In article richard@locus.com (Richard M. Mathews) writes: >I would post what I consider to be the right answer, but I have licensing >problems. I can recommend taking ideas from both Gwyn and Ramey; perhaps >one of them would be willing to post the result of such a merge. How about this (apologies for the Gnu coding style)? (As an aside, I do not think that the second fcntl will ever return EINVAL, since it only returns that error for out-of-range values (< 0 or >= getdtablesize()), and that case is already handled explicitly.) dup2 (fd1, fd2) int fd1, fd2; { int saved_errno, r; if (fcntl (fd1, F_GETFL, 0) == -1) /* fd1 is an invalid fd */ return (-1); if (fd2 < 0 || fd2 >= getdtablesize ()) /* This could be removed. */ { errno = EBADF; return (-1); } if (fd1 == fd2) return (0); saved_errno = errno; (void) close (fd2); r = fcntl (fd1, F_DUPFD, fd2); if (r >= 0) errno = saved_errno; else { if (errno == EINVAL) errno = EBADF; } return (r); } Chet -- Chet Ramey ``There's just no surf in Network Services Group Cleveland, U.S.A. ...'' Case Western Reserve University chet@ins.CWRU.Edu My opinions are just those, and mine alone. ----------------------------- From: The Grey Wolf Subject: Csh hacking -- having problems... Keywords: How to push/fork w/o losing interrupt Date: 12 Feb 91 18:51:26 GMT To: unix-wizards@sem.brl.mil [ .globl _newsfood, 512; ] I'm doing a major upgrade to the Berkeley C shell (no flames, please; I speak csh and sh fluently and have different uses for each one). One of the things I am implementing is a "push" builtin, which is supposed to simply fork() and create an exact duplicate of the shell on top of itself. In the older version of this shell (to which I have regrettably lost the source), we used to do this for extended alterations of environment without having to restart the damn thing (i.e. aliases and shell variables were preserved). It was easier than throwing it into a ( subshell ), and we needed the interaction. Now, never mind *why* I want to do this when there might be other solutions... When the push command is entered, the following set of events occurs (assume all necessary variables): dopush() { switch (fork()) { case -1: /* error */ setname("push"); bferr("Couldn't fork!"); return (1); case 0: /* child */ /* set $$ = getpid() */ /* set process group to $$ */ /* set tty process group to $$ */ /* increment push level */ return(0); default: /* parent */ wait(&exitstat); /* reset process group */ /* reset terminal process group */ return(exitstat); } } Now, the push() occurs fine (it forks and does all the necessary stuff). HOWEVER: As soon as I hit an interrupt, the pushed shell prints a prompt, exits, and the original shell prints a prompt. The thing that's confusing is that I don't know why the pushed shell is only catching the interrupt once and then giving up. It seems as though the parent shell also gets the interrupt (which I didn't think would happen if the process group gets reset). I thought Berkeley signal handlers reset themselves...? This is a Pyramid running OSx 5.0b, under the BSD universe (essentially BSD 4.2-and-a-half). -- thought: I ain't so damb dumn! | Your brand new kernel just dump core on you war: Invalid argument | And fsck can't find root inode 2 | Don't worry -- be happy... ...!{ucbvax,acad,uunet,amdahl,pyramid}!unisoft!greywolf ----------------------------- From: Roy Smith Subject: How to read v6 distribution tapes? Date: 12 Feb 91 20:22:03 GMT Sender: News System To: unix-wizards@sem.brl.mil After the recent talk about v6 history on this group, I figured I'd actually do something crazy and go back and look at the source to make sure. Unfortunately, I'm not sure how to do that! The tape I have consists of several RK-05 images with v6 file systems on them. Is there any reasonable way to read them on a 4.3BSD vax or a SunOS-3.5 system? -- Roy Smith, Public Health Research Institute 455 First Avenue, New York, NY 10016 roy@alanine.phri.nyu.edu -OR- {att,cmcl2,rutgers,hombre}!phri!roy "Arcane? Did you say arcane? It wouldn't be Unix if it wasn't arcane!" ----------------------------- From: David Johnson Subject: Interprocess Communication question Date: 13 Feb 91 04:37:50 GMT Originator: dejohnso@cs.utah.edu To: unix-wizards@sem.brl.mil Can anyone out there help me get started learning about interprocess communication? Do you have any bare-bones examples of how to use sockets and things like that? How about helpful articles or books to read? I am hoping to try some distributed graphics and don't want to communicate through files or anything like that. Any help would be appreciated. Please send e-mail to dejohnso@cs.utah.edu. Oh yeah, thanks!!!!!!!!! ----------------------------- End of UNIX-WIZARDS Digest **************************