GRASS Programmer's Manual  6.4.1(2011)
put_title.c
Go to the documentation of this file.
00001 
00002 /**************************************************************
00003  * G_put_cell_title (name, title)
00004  *   char *name        name of map file
00005  *   char *title       new title
00006  *
00007  *   changes the title for the cell file 'name' in  current mapset
00008  *
00009  *   returns  1 if ok, -1 if error
00010  *************************************************************/
00011 
00012 #include <string.h>
00013 #include <grass/gis.h>
00014 #include <grass/glocale.h>
00015 
00016 int G_put_cell_title(const char *name, const char *title)
00017 {
00018     char *mapset;
00019     FILE *in, *out;
00020     char *tempfile;
00021     int line;
00022     char buf[1024];
00023 
00024     mapset = G_mapset();
00025     in = out = 0;
00026     in = G_fopen_old("cats", name, mapset);
00027     if (!in) {
00028         sprintf(buf,
00029                 _("category information for [%s] in [%s] missing or invalid"),
00030                 name, mapset);
00031         G_warning(buf);
00032         return -1;
00033     }
00034 
00035     tempfile = G_tempfile();
00036     out = fopen(tempfile, "w");
00037     if (!out) {
00038         fclose(in);
00039         sprintf(buf, _("G_put_title - can't create a temp file"));
00040         G_warning(buf);
00041         return -1;
00042     }
00043 
00044     for (line = 0; G_getl(buf, sizeof buf, in); line++) {
00045         if (line == 1) {
00046             strcpy(buf, title);
00047             G_strip(buf);
00048         }
00049         fprintf(out, "%s\n", buf);
00050     }
00051     fclose(in);
00052     fclose(out);
00053 
00054     /* must be #cats line, title line, and label for cat 0 */
00055     if (line < 3) {
00056         sprintf(buf, _("category information for [%s] in [%s] invalid"), name,
00057                 mapset);
00058         G_warning(buf);
00059         return -1;
00060     }
00061 
00062     in = fopen(tempfile, "r");
00063     if (!in) {
00064         sprintf(buf, _("G_put_title - can't reopen temp file"));
00065         G_warning(buf);
00066         return -1;
00067     }
00068 
00069     out = G_fopen_new("cats", name);
00070     if (!out) {
00071         fclose(in);
00072         sprintf(buf, _("can't write category information for [%s] in [%s]"),
00073                 name, mapset);
00074         G_warning(buf);
00075         return -1;
00076     }
00077 
00078     while (fgets(buf, sizeof buf, in))
00079         fprintf(out, "%s", buf);
00080 
00081     fclose(in);
00082     fclose(out);
00083     remove(tempfile);
00084 
00085     return 1;
00086 }
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines