/*************************************************************************** * at_exit_funcs.c * * Mon Apr 18 14:52:20 2005 * Copyright 2005 Benjamin Ducke ****************************************************************************/ /* * This program 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 of the License, or * (at your option) any later version. * * This program 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "globals.h" /* unset environment variables */ void exit_env ( void ) { unsetenv ("GINSTALL_DST"); unsetenv ("GINSTALL_INC"); unsetenv ("GINSTALL_LIB"); unsetenv ("UNINSTALL_BASE"); unsetenv ("GEM_EXT_NAME"); unsetenv ("GEM_EXT_VERSION"); unsetenv ("GEM_EXT_DESCR"); unsetenv ("GEM_EXT_INFO"); unsetenv ("GEM_EXT_DEPS"); unsetenv ("GEM_EXT_BUGS"); unsetenv ("GEM_EXT_AUTHORS"); unsetenv ("GEM_GRASS_DIR"); unsetenv ("GEM_ACTION"); unsetenv ("INSTALL_BASE"); unsetenv ("INSTALL_TYPE"); unsetenv ("GEM_FORCE"); unsetenv ("GEM_VERBOSE"); unsetenv ("GEM_GUI"); unsetenv ("GEM_C_OPTS"); } /* delete temp directory */ void exit_tmp ( void ) { int error; char tmp [MAXSTR]; DIR *dir; /* if TMPDIR is not set: do not call rmdir! */ if ( !strcmp ( TMPDIR, "" ) ) { TMPCLEAN = 1; return; } if ( TMPCLEAN == 0 ) { /* a dirty trick to make sure this only runs once */ /* step out of temporary dir, in case this extension has been */ /* installed from an archived dir */ chdir ( CWD ); sprintf (tmp, "rm -rf %s/*", TMPDIR); if ( VERBOSE ) { fprintf (stdout, "Removing temporary extension files..."); } error = system ( tmp ); sprintf (tmp, "rmdir %s", TMPDIR); error = system ( tmp ); /* check if extension dir still exists and if so: warn */ dir = opendir (TMPDIR); if ( dir != NULL ) { print_warning ("could not remove temporary directory %s.\nPlease remove manually.\n", TMPDIR); } if ( VERBOSE ) { print_done(); } TMPCLEAN = 1; } } /* delete temp database */ void exit_db ( void ) { int error; char tmp [MAXSTR]; if ( TMPDBCLEAN == 0 ) { /* a dirty trick to make sure this only runs once */ /* step out of temporary dir, in case this extension has been */ /* installed from an archived dir */ chdir ( CWD ); if ( VERBOSE ) { fprintf (stdout, "Removing temporary registration files..."); } if ( strcmp ( TMPDB, "" ) ) { sprintf (tmp, "rm -rf %s", TMPDB); error = system ( tmp ); if ( error != 0 ) { print_warning ("could not remove temporary file %s.\nPlease remove manually.\n", TMPDB); } } if ( strcmp ( TMP_GISMAN, "" ) ) { sprintf (tmp, "rm -f %s", TMP_GISMAN); error = system ( tmp ); if ( error != 0 ) { print_warning ("could not remove temporary file %s.\nPlease remove manually.\n", TMP_GISMAN); } } if ( strcmp ( TMP_DESCR, "" ) ) { sprintf (tmp, "rm -f %s", TMP_DESCR); error = system ( tmp ); if ( error != 0 ) { print_warning ("could not remove temporary file %s.\nPlease remove manually.\n", TMP_DESCR); } } if ( strcmp ( TMP_INFO, "" ) ) { sprintf (tmp, "rm -f %s", TMP_INFO); error = system ( tmp ); if ( error != 0 ) { print_warning ("could not remove temporary file %s.\nPlease remove manually.\n", TMP_INFO); } } if ( strcmp ( TMP_DEPS, "" ) ) { sprintf (tmp, "rm -f %s", TMP_DEPS); error = system ( tmp ); if ( error != 0 ) { print_warning ("could not remove temporary file %s.\nPlease remove manually.\n", TMP_INFO); } } if ( strcmp ( TMP_BUGS, "" ) ) { sprintf (tmp, "rm -f %s", TMP_BUGS); error = system ( tmp ); if ( error != 0 ) { print_warning ("could not remove temporary file %s.\nPlease remove manually.\n", TMP_INFO); } } if ( strcmp ( TMP_AUTHORS, "" ) ) { sprintf (tmp, "rm -f %s", TMP_AUTHORS); error = system ( tmp ); if ( error != 0 ) { print_warning ("could not remove temporary file %s.\nPlease remove manually.\n", TMP_INFO); } } if ( strcmp ( TMP_HTML, "" ) ) { sprintf (tmp, "rm -f %s", TMP_HTML); error = system ( tmp ); if ( error != 0 ) { print_warning ("could not remove temporary file %s.\nPlease remove manually.\n", TMP_HTML); } } if (!VERBOSE) { if ( strcmp ( TMP_NULL, "" ) ) { sprintf (tmp, "rm -f %s", TMP_NULL); error = system ( tmp ); if ( error != 0 ) { print_warning ("could not remove temporary file %s.\nPlease remove manually.\n", TMP_NULL); } } } if ( VERBOSE ) { print_done(); } TMPDBCLEAN = 1; } } /* show a message at end of program */ void exit_msg ( void ) { if ( ERROR < 0 ) { fprintf ( stdout, "Program exited with an error (code %i). Operation aborted.\n", ERROR); } else { if ( WARNINGS == 1 ) { fprintf ( stdout, "Job done but there was one warning. Please check.\n" ); } if ( WARNINGS > 1 ) { fprintf ( stdout, "Job done but there were %i warnings. Please check.\n", WARNINGS); } } }