From 97a1a26752dcd4a418e0a20fee7aed362d4b3577 Mon Sep 17 00:00:00 2001 From: Michiel Broek Date: Sat, 3 Dec 2005 14:06:29 +0000 Subject: [PATCH] Added tmpwork functions --- lib/Makefile | 4 +-- lib/mbselib.h | 7 +++++ lib/tmpwork.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 lib/tmpwork.c diff --git a/lib/Makefile b/lib/Makefile index 0de53482..ba53bdf4 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -11,14 +11,14 @@ COMMON_SRCS = clcomm.c client.c crc.c semafore.c signame.c charset.c remask.c \ dostran.c ftnmsg.c mbfile.c nodelock.c rawio.c strcasestr.c \ execute.c expipe.c getheader.c noderecord.c rfcaddr.c strutil.c \ faddr.c gmtoffset.c packet.c rfcdate.c term.c endian.c timers.c \ - pidinfo.c + pidinfo.c tmpwork.c COMMON_OBJS = clcomm.o client.o crc.o semafore.o signame.o charset.o remask.o \ ftscprod.o attach.o falists.o hdr.o parsedate.o rfcmsg.o unpacker.o \ batchrd.o ftn.o pktname.o mangle.o sectest.o proglock.o rearc.o \ dostran.o ftnmsg.o mbfile.o nodelock.o rawio.o strcasestr.o magic.o \ execute.o expipe.o getheader.o noderecord.o rfcaddr.o strutil.o \ faddr.o gmtoffset.o packet.o rfcdate.o term.o endian.o timers.o \ - pidinfo.o + pidinfo.o tmpwork.o COMMON_HDRS = mbselib.h NODELIST_SRCS = nodelist.c NODELIST_OBJS = nodelist.o diff --git a/lib/mbselib.h b/lib/mbselib.h index 1fce8f30..91c88a14 100644 --- a/lib/mbselib.h +++ b/lib/mbselib.h @@ -2562,6 +2562,13 @@ int magic_check(char *, char *); /* Check if magic alias exists */ int pid2prog(pid_t, char *, size_t); /* Find progrname for a pid */ +/* + * tmpwork.c + */ +void clean_tmpwork(void); /* Remove tmp workdir */ +int create_tmpwork(void); /* Create tmp workdir */ + + /************************************************************************* * * Charset mapping diff --git a/lib/tmpwork.c b/lib/tmpwork.c new file mode 100644 index 00000000..3d4e0872 --- /dev/null +++ b/lib/tmpwork.c @@ -0,0 +1,87 @@ +/***************************************************************************** + * + * $Id$ + * Purpose ...............: temp workdirectory + * + ***************************************************************************** + * Copyright (C) 1997-2005 + * + * Michiel Broek FIDO: 2:280/2802 + * Beekmansbos 10 + * 1971 BV IJmuiden + * the Netherlands + * + * This file is part of MBSE BBS. + * + * This BBS is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * MBSE BBS is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MBSE BBS; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + *****************************************************************************/ + +#include "../config.h" +#include "mbselib.h" + + +static int is_tmpwork = FALSE; + + +void clean_tmpwork(void) +{ + char *buf, *temp, *arc; + + if (is_tmpwork) { + buf = calloc(PATH_MAX, sizeof(char)); + temp = calloc(PATH_MAX, sizeof(char)); + arc = calloc(PATH_MAX, sizeof(char)); + getcwd(buf, PATH_MAX); + snprintf(temp, PATH_MAX, "%s/tmp", getenv("MBSE_ROOT")); + snprintf(arc, PATH_MAX, "arc%d", (int)getpid()); + + if (chdir(temp) == 0) { + Syslog('f', "clean_tmpwork %s/%s", temp, arc); + execute_pth((char *)"rm -r -f", arc, (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null"); + } else { + WriteError("$Can't chdir to %s", temp); + } + + chdir(buf); + free(temp); + free(buf); + free(arc); + is_tmpwork = FALSE; + } +} + + +int create_tmpwork(void) +{ + char *temp; + int rc = 0; + + if (! is_tmpwork) { + temp = calloc(PATH_MAX, sizeof(char)); + snprintf(temp, PATH_MAX, "%s/tmp/arc%d", getenv("MBSE_ROOT"), (int)getpid()); + + if (! mkdirs(temp, 0755)) + rc = 1; + else + is_tmpwork = TRUE; + + Syslog('f', "create_tmpwork %s rc=%d", temp, rc); + free(temp); + } + + return rc; +} + +