Files
org-hyperion-cules/cckdcomp.c
Fish (David B Trout) e9f036c920 (oops! I missed a little bit. Sorry! :)
git-svn-id: file:///home/jj/hercules.svn/trunk@802 956126f8-22a0-4046-8f4a-272fa8102e63
2002-04-08 13:24:11 +00:00

105 lines
3.1 KiB
C

/* CCKDCOMP.C (c) Copyright Roger Bowler, 1999-2002 */
/* Perform chkdsk for a Compressed CKD Direct Access Storage */
/* Device file. */
/*-------------------------------------------------------------------*/
/* Remove all free space on a compressed ckd file */
/*-------------------------------------------------------------------*/
#include "hercules.h"
int syntax ();
#ifdef EXTERNALGUI
/* Special flag to indicate whether or not we're being
run under the control of the external GUI facility. */
int extgui = 0;
#endif /*EXTERNALGUI*/
/*-------------------------------------------------------------------*/
/* Main function for stand-alone compress */
/*-------------------------------------------------------------------*/
int main (int argc, char *argv[])
{
int rc; /* Return code */
char *fn; /* File name */
int fd; /* File descriptor */
int level=-1; /* Level for chkdsk */
#ifdef EXTERNALGUI
if (argc >= 1 && strncmp(argv[argc-1],"EXTERNALGUI",11) == 0)
{
extgui = 1;
argc--;
}
#endif /*EXTERNALGUI*/
/* Display the program identification message */
display_version (stderr, "Hercules cckd compress program ");
/* parse the arguments */
for (argc--, argv++ ; argc > 0 ; argc--, argv++)
{
if(**argv != '-') break;
switch(argv[0][1])
{
case '0':
case '1':
case '3': if (argv[0][2] != '\0') return syntax ();
level = (argv[0][1] & 0xf);
break;
default: return syntax ();
}
}
if (argc != 1) return syntax ();
fn = argv[0];
/* open the file */
fd = open (fn, O_RDWR|O_BINARY);
if (fd < 0)
{
fprintf (stderr,
"cckdcomp: error opening file %s: %s\n",
fn, strerror(errno));
return -1;
}
/* call chkdsk() if level was specified */
if (level >= 0)
{
rc = cckd_chkdsk (fd, stderr, level);
if (rc < 0)
{
fprintf (stderr,
"cckdcomp: terminating due to chkdsk errors%s\n", "");
return -1;
}
}
/* call the actual compress function */
rc = cckd_comp (fd, stderr);
close (fd);
return rc;
}
/*-------------------------------------------------------------------*/
/* print syntax */
/*-------------------------------------------------------------------*/
int syntax()
{
fprintf (stderr, "cckdcomp [-level] file-name\n"
"\n"
" where level is a digit 0 - 3\n"
" specifying the cckdcdsk level:\n"
" 0 -- minimal checking\n"
" 1 -- normal checking\n"
" 3 -- maximal checking\n");
return -1;
}