static int
slink_safe_rename(const char * oldpath, const char * newpath)
{
- int r;
- struct stat s;
- char slink_path[PATH_MAX];
- char real_newpath = newpath;
-
- if((lstat(newpath, &s) == 0) && (S_ISLNK(s.st_mode))) {
-
- /* New path is a symbolic link, do not destroy but follow */
-
- if((r = readlink(newpath, slink_path, PATH_MAX))==-1) {
-
- return -1;
-
- }
-
- slink_path[ (r < PATH_MAX) ? (r + 1) : (PATH_MAX - 1)] = '\0';
-
- real_newpath = slink_path;
-
- }
-
- return rename(oldpath, real_newpath);
+ int r;
+ struct stat s;
+ char slink_path[PATH_MAX];
+ const char *real_newpath = newpath;
+
+ if ((lstat(newpath, &s) == 0) && S_ISLNK(s.st_mode)) {
+ /* New path is a symbolic link, do not destroy but follow */
+ if ((r = readlink(newpath, slink_path, PATH_MAX - 1)) == -1)
+ return -1;
+ slink_path[r] = '\0';
+ real_newpath = slink_path;
+ }
-}/* static int slink_safe_rename() */
+ return rename(oldpath, real_newpath);
+}
void
-mountlist_add(nfs_export *exp, const char *path)
+mountlist_add(char *host, const char *path)
{
struct rmtabent xe;
struct rmtabent *rep;
setrmtabent("r+");
while ((rep = getrmtabent(1, &pos)) != NULL) {
if (strcmp (rep->r_client,
- exp->m_client->m_hostname) == 0
+ host) == 0
&& strcmp(rep->r_path, path) == 0) {
rep->r_count++;
putrmtabent(rep, &pos);
}
}
endrmtabent();
- strncpy(xe.r_client, exp->m_client->m_hostname,
+ strncpy(xe.r_client, host,
sizeof (xe.r_client) - 1);
xe.r_client [sizeof (xe.r_client) - 1] = '\0';
strncpy(xe.r_path, path, sizeof (xe.r_path) - 1);
}
void
-mountlist_del(nfs_export *exp, const char *path)
+mountlist_del(char *hname, const char *path)
{
struct rmtabent *rep;
FILE *fp;
- char *hname = exp->m_client->m_hostname;
int lockid;
int match;