File: table-update.cpp

package info (click to toggle)
gcin 2.9.4%2Bdfsg1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 21,796 kB
  • sloc: cpp: 34,326; ansic: 9,319; makefile: 658; sh: 556
file content (36 lines) | stat: -rw-r--r-- 833 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "gcin.h"
#include <sys/stat.h>
#if UNIX
#include <linux/limits.h>
#endif

void update_table_file(char *name, int version)
{
#if UNIX
  char fname_user[PATH_MAX];
  char fname_version[PATH_MAX];
  char fname_sys[PATH_MAX];
  char version_name[PATH_MAX];

  strcat(strcpy(version_name, name), ".version");
  get_gcin_user_fname(version_name, fname_version);
  get_gcin_user_fname(name, fname_user);
  get_sys_table_file_name(name, fname_sys);

  FILE *fp;
  if ((fp=fopen(fname_version, "r"))) {
    int ver=0;
    fscanf(fp, "%d", &ver);
    fclose(fp);

    if (ver >= version)
      return;
  }

  char cmd[6*PATH_MAX];
  snprintf(cmd, sizeof(cmd), "mv -f %s %s.old && cp %s %s && echo %d > %s", fname_user, fname_user,
      fname_sys, fname_user, version, fname_version);
  dbg("exec %s\n", cmd);
  system(cmd);
#endif
}