home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 March
/
VPR9703A.ISO
/
OLS
/
Os2
/
LHA2P205
/
LHA2P205.LZH
/
lha2-2.05pre
/
source.lzh
/
src
/
error.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-10-15
|
1KB
|
86 lines
/*
* error.c --- error processing
* Copyright (C) 1988-1992, Haruyasu YOSHIZAKI
*
* $Log$
*/
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <time.h>
#include "typedef.h"
#include "port2.h"
#include "lh.h"
#include "header.h"
#include "errmes.h"
/* process for error */
void
error(char *errmes, const char *p)
{
if(file1 != NULL)
{
fclose(file1);
if(cmdupdate) /* during updating */
rename(filename1, arcname); /* recover old archive */
}
if(errmes == COPYERR) /* error during copying temporary? */
{
fclose(file2);
eprintf(COPYERR, filename2);
exit(3);
}
if(file3 != NULL)
{
fclose(file3);
if(cmd == 'E') /* during extracting */
remove(filename3); /* delete the file */
}
if(file2 != NULL)
{
fclose(file2);
remove(filename2); /* delete temporary */
}
eprintf("\n%s", errmes);
if(p)
eprintf(" : '%s'", p);
eprintf("\n");
exit(2);
}
void
fileerror(char *errmes, FILE *file)
{
char *name;
name = NULL;
if(file == file1)
name = filename1;
if(file == file2)
name = filename2;
if(file == file3)
name = hpb.pathname;
error(errmes, name);
}
/* handle user break */
void
userbreak(int code)
{
error(CTRLBRK, NULL);
}
void
initbreak(void)
{
signal(SIGINT, userbreak);
}