|
|
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 b
Length: 1420 (0x58c)
Types: TextFile
Names: »bbtar.c«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit
└─⟦3658e588a⟧ »EurOpenD3/mail/mh/mh-6.7.tar.Z«
└─⟦c75e36ecb⟧
└─⟦this⟧ »mh-6.7/support/bboards/bbtar.c«
/* bbtar.c - generate the names of archive files to be put to tape */
/* Usage:
% cd ~bboards/archive # followed by one of:
% tar cv `bbtar private` # to save private BBoard archives
% tar cv `bbtar public` # to save public BBoard archives
% tar cv `bbtar` # to save all BBoard archives
*/
#include <pwd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "../zotnet/bboards.h"
#define NOTOK (-1)
static int priv = 0;
static char archives[BUFSIZ];
static process();
struct passwd *getpwnam ();
/* \f
*/
/* ARGSUSED */
main (argc, argv)
int argc;
char **argv;
{
struct bboard *bb;
struct passwd *pw;
if ((pw = getpwnam (BBOARDS)) == NULL)
exit (1);
(void) sprintf (archives, "%s/archive/", pw -> pw_dir);
if (argc > 1)
priv = strcmp (argv[1], "private") == 0 ? 1
: strcmp (argv[1], "public") == 0 ? -1
: 0;
(void) setbbent (SB_STAY);
while (bb = getbbent ())
process (bb);
(void) endbbent ();
exit (0);
}
/* \f
*/
static process (bb)
struct bboard *bb;
{
struct stat st;
if (stat (bb -> bb_archive, &st) == NOTOK)
return;
if (strncmp (archives, bb -> bb_archive, strlen (archives)) == 0)
bb -> bb_archive += strlen (archives);
if (priv == 0)
printf ("%s\n", bb -> bb_archive);
else
if ((st.st_mode & 0444) != 0444 ? (priv > 0) : (priv < 0))
printf ("%s\n", bb -> bb_archive);
}