/*
* $Id: mechfile.c,v 1.1 2005/06/13 20:50:49 murrayma Exp $
*
* Author: Markus Stenberg <fingon@iki.fi>
*
* Copyright (c) 1996 Markus Stenberg
* All rights reserved
*
* Created: Tue Oct 29 23:09:59 1996 fingon
* Last modified: Fri Feb 7 19:37:02 1997 fingon
*
*/
#include <stdio.h>
#include <string.h>
#undef FILES_COMPRESSED_BY_DEFAULT
FILE *my_open_file(char *name, char *mode, int *openway)
{
FILE *f;
char buf[512];
char buf2[512];
if (!strcmp(mode, "w")) {
#ifdef FILES_COMPRESSED_BY_DEFAULT
/* dup2(2, 1); */
sprintf(buf, "nice gzip -c > %s.gz", name);
if (!(f = popen(buf, mode)))
return NULL;
*openway = 1;
return f;
#else
if (!(f = fopen(name, mode)))
return NULL;
*openway = 0;
return f;
#endif
}
if ((f = fopen(name, mode))) {
*openway = 0;
return f;
}
sprintf(buf, "%s.gz", name);
if ((f = fopen(buf, mode)))
fclose(f);
else
return NULL;
sprintf(buf2, "nice gzip -dc < %s", buf);
/* dup2(2, 1); */
if ((f = popen(buf2, mode))) {
*openway = 1;
return f;
}
return NULL;
}
void my_close_file(FILE * f, int *openway)
{
if (!f)
return;
if (*openway) {
pclose(f);
/* close(1); */
} else
fclose(f);
}