X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils%2Fstatd%2Fstate.c;fp=utils%2Fstatd%2Fstate.c;h=0000000000000000000000000000000000000000;hb=f113db5225e2954a53fd7eecccfc08326904909f;hp=f46dae5d7e343ef1ac94b07bec72a7f056219fa8;hpb=19d85885b9eba376c7fc96c2f0b69c22776ba077;p=nfs-utils.git diff --git a/utils/statd/state.c b/utils/statd/state.c deleted file mode 100644 index f46dae5..0000000 --- a/utils/statd/state.c +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) 1995-1997, 1999 Jeffrey A. Uphoff - * Modified by Olaf Kirch, 1996. - * Modified by H.J. Lu, 1998. - * - * NSM for Linux. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include "statd.h" - - -/* - * Most NSM's keep the status number in an ASCII file. I'm keeping it - * as an int (4-byte binary) for now... - */ -void -change_state (void) -{ - int fd, size; - - if ((fd = open (SM_STAT_PATH, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) == -1) - die ("open (%s): %s", SM_STAT_PATH, strerror (errno)); - - if ((size = read (fd, &MY_STATE, sizeof MY_STATE)) == -1) - die ("read (%s): %s", SM_STAT_PATH, strerror (errno)); - - if (size != 0 && size != sizeof MY_STATE) { - note (N_ERROR, "Error in status file format...correcting."); - - if (close (fd) == -1) - die ("close (%s): %s", SM_STAT_PATH, strerror (errno)); - - if ((fd = creat (SM_STAT_PATH, S_IRUSR | S_IWUSR)) == -1) - die ("creat (%s): %s", SM_STAT_PATH, strerror (errno)); - } - note (N_DEBUG, "New state: %u", (++MY_STATE % 2) ? MY_STATE : ++MY_STATE); - - if (lseek (fd, 0, SEEK_SET) == -1) - die ("lseek (%s): %s", SM_STAT_PATH, strerror (errno)); - - if (write (fd, &MY_STATE, sizeof MY_STATE) != sizeof MY_STATE) - die ("write (%s): %s", SM_STAT_PATH, strerror (errno)); - - if (fsync (fd) == -1) - note (N_ERROR, "fsync (%s): %s", SM_STAT_PATH, strerror (errno)); - - if (close (fd) == -1) - note (N_ERROR, "close (%s): %s", SM_STAT_PATH, strerror (errno)); - - if (MY_NAME == NULL) { - char fullhost[SM_MAXSTRLEN + 1]; - struct hostent *hostinfo; - - if (gethostname (fullhost, SM_MAXSTRLEN) == -1) - die ("gethostname: %s", strerror (errno)); - - if ((hostinfo = gethostbyname (fullhost)) == NULL) - note (N_ERROR, "gethostbyname error for %s", fullhost); - else { - strncpy (fullhost, hostinfo->h_name, sizeof (fullhost) - 1); - fullhost[sizeof (fullhost) - 1] = '\0'; - } - - MY_NAME = xstrdup (fullhost); - } -} - - -/* - * Fairly traditional use of two directories for this. - */ -void -shuffle_dirs (void) -{ - DIR *nld; - struct dirent *de; - struct stat st; - char *src, *dst; - int len1, len2, len; - - if (stat (SM_DIR, &st) == -1 && errno != ENOENT) - die ("stat (%s): %s", SM_DIR, strerror (errno)); - - if (!S_ISDIR (st.st_mode)) - if (mkdir (SM_DIR, S_IRWXU) == -1) - die ("mkdir (%s): %s", SM_DIR, strerror (errno)); - - memset (&st, 0, sizeof st); - - if (stat (SM_BAK_DIR, &st) == -1 && errno != ENOENT) - die ("stat (%s): %s", SM_BAK_DIR, strerror (errno)); - - if (!S_ISDIR (st.st_mode)) - if (mkdir (SM_BAK_DIR, S_IRWXU) == -1) - die ("mkdir (%s): %s", SM_BAK_DIR, strerror (errno)); - - if (!(nld = opendir (SM_DIR))) - die ("opendir (%s): %s", SM_DIR, strerror (errno)); - - len1=strlen(SM_DIR); - len2=strlen(SM_BAK_DIR); - while ((de = readdir (nld))) { - if (de->d_name[0] == '.') - continue; - len=strlen(de->d_name); - src=xmalloc(len1+len+2); - dst=xmalloc(len2+len+2); - sprintf (src, "%s/%s", SM_DIR, de->d_name); - sprintf (dst, "%s/%s", SM_BAK_DIR, de->d_name); - if (rename (src, dst) == -1) - die ("rename (%s to %s): %s", SM_DIR, SM_BAK_DIR, strerror (errno)); - free(src); - free(dst); - } - if (closedir (nld) == -1) - note (N_ERROR, "closedir (%s): %s", SM_DIR, strerror (errno)); -}