home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
norge.freeshell.org (192.94.73.8)
/
192.94.73.8.tar
/
192.94.73.8
/
pub
/
computers
/
pcjr
/
arc
/
PAKUTL12.LZH
/
PAKAS.C
< prev
next >
Wrap
Text File
|
1988-09-11
|
3KB
|
120 lines
/*
PAKAS.C ARCA -> PKPAK converter, with sort.
Copyright 1988, Michael J. Housky
Released to the Public Domain ... *no* rights reserved.
*/
/*
Update log:
Version 1.2, 10 September 1988: Released to public domain.
Version 1.0, 27 August 1988: First version.
*/
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
#include <errno.h>
/*
spawn_err: Decode/print spawn/exec error message.
Return ERRORLEVEL exit code.
*/
int spawn_err( char*, int );
int spawn_err( pname, err )
char *pname; /* program name */
int err; /* copy of errno */
{
register int rc;
switch ( err )
{
case ENOENT:
printf("Can't find %s in DOS PATH\n",pname);
rc = 254;
break;
case ENOMEM:
printf("Insufficient memory to load %s\n",pname);
rc = 253;
break;
default:
printf("Error %d loading %s\n",errno,pname);
rc = 252;
break;
}
return rc;
} /* spawn_err */
/*
PAKAS.C main program
*/
int main(int,char **);
int main( argc, argv )
int argc;
char **argv;
{
register int
i,j;
char *pname;
char *order;
char pakfile[88];
/* First, identify self and examine paramter: */
printf("\nPAKAS: ARCA-to-PKPAK/PAKSORT v1.2\n");
if ( argc < 3 )
{
printf("Usage: arca archive filespec\n");
return 255;
}
/* Next, copy archive name and append default filetype, if necessary */
strncpy(pakfile, argv[1], sizeof(pakfile)-5);
pakfile[sizeof(pakfile)-5] = '\0';
i = strlen(pakfile);
do
{
j = pakfile[--i];
if ( j=='\\' || j==':' || i==0 )
{
strcat(pakfile,".ARC");
break;
}
} while ( j!='.' && i>0 );
/* Now spawn PKPAK to move files to archive: */
pname = "PKPAK"; /* run PKPAK first */
printf(">PKPAK -oct m %s %s\n",pakfile,argv[2]);
j = spawnlp( P_WAIT, pname, pname, "-oct", "m", pakfile, argv[2], NULL );
if ( j ) /* if error from PKPAK */
{
if ( j==-1 ) /* if spawn error */
return spawn_err(pname,errno);
return j; /* return code to caller */
}
/* PKPAK succeeded, run PAKSORT to sort by date/time/name.ext: */
pname = "PAKSORT"; /* run PAKSORT next */
order = "D+T+F+"; /* sort by date/time/name.ext */
printf(">PAKSORT %s %s\n", pakfile, order);
j = execlp( pname, pname, pakfile, order, NULL );
/* Arrive here on spawn/exec trouble: global errno has reason */
spawn_err(pname,errno); /* Display reason */
return 0; /* good return, PKPAK succeeded */
} /* main */