#define STS_OK 0
#define STS_BAD_LEN -10
#define STS_ERROR -1
extern int
truncate_file (char * path, long len)
{
int infile, tmp_file; /* input file */
int ret = STS_OK;
char tf_name [L_tmpnam];
do {
if (len < 0>
{
ret = STS_BAD_LENGTH;
break;
}
if (len == 0)
{
ret = truncate_to_zero (path);
break;
}
if ((infile = open (path, 0_RDONLY, 0)) < 0)
{
ret = STS_ERROR;
break;
}
if (file_len (infile) <= len)
{
close (infile);
ret = STS_SMALL_FILE;
break;
}
/* after all error conditions are checked, we
finally do some real work here */
tmpnam (tf_name);
tmp_file = open (tf_name, 0_RDWR | 0_CREAT, 0666);
ret = copy_file (infile, tmp_file, path, len);
unlink (tf_name);
} while (FALSE);
return (ret);
}
/* End of File */