|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T l
Length: 2495 (0x9bf) Types: TextFile Names: »listalias.c«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦4fd8323b9⟧ »EurOpenD3/mail/elm2.3.tar.Z« └─⟦698c4f91f⟧ └─⟦this⟧ »utils/listalias.c«
static char rcsid[] = "@(#)$Id: listalias.c,v 4.1 90/04/28 22:44:42 syd Exp $"; /******************************************************************************* * The Elm Mail System - $Revision: 4.1 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust ******************************************************************************* * Bug reports, patches, comments, suggestions should be sent to: * * Syd Weinstein, Elm Coordinator * elm@DSI.COM dsinc!elm * ******************************************************************************* * $Log: listalias.c,v $ * Revision 4.1 90/04/28 22:44:42 syd * checkin of Elm 2.3 as of Release PL0 * * ******************************************************************************/ /** Program that lists all the available aliases. This one uses the pipe command, feeding the stuff to egrep then sort, or just sort. **/ #include <stdio.h> #include <fcntl.h> #include "defs.h" #include "sysdefs.h" #ifdef BSD FILE *popen(); #endif char *getenv(); main(argc, argv) int argc; char *argv[]; { FILE *datafile, *fd_pipe; struct alias_rec hash_record; int hashfile, count = 0; char buffer[SLEN], fd_hash[SLEN], fd_data[SLEN], *home; if (argc > 2) { printf("Usage: listalias <optional-regular-expression>\n"); exit(1); } home = getenv("HOME"); sprintf(fd_hash, "%s/%s", home, ALIAS_HASH); sprintf(fd_data, "%s/%s", home, ALIAS_DATA); if (argc > 1) sprintf(buffer, "egrep \"%s\" | sort", argv[1]); else sprintf(buffer, "sort"); if ((fd_pipe = popen(buffer, "w")) == NULL) { if (argc > 1) printf("cannot open pipe to egrep program for expressions!\n"); fd_pipe = stdout; } do { if ((hashfile = open(fd_hash, O_RDONLY)) > 0) { if ((datafile = fopen(fd_data, "r")) == NULL) { printf("Opened %s hash file, but couldn't open data file!\n", count? "system" : "user"); goto next_file; } /** Otherwise let us continue... **/ while (read(hashfile, &hash_record, sizeof (hash_record)) != 0) { if (strlen(hash_record.name) > 0) { fseek(datafile, ntohl(hash_record.byte), 0L); fgets(buffer, SLEN, datafile); fprintf(fd_pipe, "%-15s %s", hash_record.name, buffer); } } } next_file: strcpy(fd_hash, system_hash_file); strcpy(fd_data, system_data_file); } while (++count < 2); pclose(fd_pipe); exit(0); }