/**************************************************************************** * * MODULE: g.tempfile * AUTHOR(S): Michael Shapiro CERL (original contributor) * Markus Neteler , * Roberto Flor , * Bernhard Reiter , * Jan-Oliver Wagner , * Martin Landa * PURPOSE: * COPYRIGHT: (C) 1999-2006, 2011 by the GRASS Development Team * * This program is free software under the GNU General * Public License (>=v2). Read the file COPYING that * comes with GRASS for details. * *****************************************************************************/ #include #include #include #include #include #include #include int main(int argc, char *argv[]) { struct GModule *module; struct Option *pid; struct Flag *dry_run; char *tempfile; int p; G_gisinit(argv[0]); module = G_define_module(); G_add_keyword(_("general")); G_add_keyword(_("support")); G_add_keyword(_("scripts")); module->description = _("Creates a temporary file and prints it's file name."); pid = G_define_option(); pid->key = "pid"; pid->type = TYPE_INTEGER; pid->required = YES; pid->description = _("Process id to use when naming the tempfile"); dry_run = G_define_flag(); dry_run->key = 'd'; dry_run->description = _("Dry run - don't create a file, just prints it's file name"); G_disable_interactive(); if (G_parser(argc, argv)) exit(EXIT_FAILURE); if (sscanf(pid->answer, "%d", &p) != 1) { G_usage(); exit(EXIT_FAILURE); } tempfile = G_tempfile_pid(p); /* create tempfile so next run of this program will create a unique name */ if (!dry_run->answer) close(creat(tempfile, 0666)); fprintf(stdout, "%s\n", tempfile); exit(EXIT_SUCCESS); }