char *path;
} comarg_t;
-static int
-obj_to_handle (
- char *fspath,
- int fsfd,
- unsigned int opcode,
- comarg_t obj,
- void **hanp,
- size_t *hlen);
-
-static int
-handle_to_fsfd (
- void *hanp,
- char **path);
+static int obj_to_handle(char *, int, unsigned int, comarg_t, void**, size_t*);
+static int handle_to_fsfd(void *, char **);
/*
char fspath[MAXPATHLEN];
};
-static struct fdhash *fdhash_head = NULL;
+static struct fdhash *fdhash_head;
int
-path_to_fshandle (
+path_to_fshandle(
char *path, /* input, path to convert */
void **hanp, /* output, pointer to data */
size_t *hlen) /* output, size of returned data */
struct fdhash *fdhp;
fd = open(path, O_RDONLY);
-
- if (fd < 0) {
- perror(path);
- exit(1);
- }
+ if (fd < 0)
+ return -1;
obj.path = path;
-
result = obj_to_handle(path, fd, XFS_IOC_PATH_TO_FSHANDLE,
obj, hanp, hlen);
-
if (result >= 0) {
fdhp = malloc(sizeof(struct fdhash));
if (fdhp == NULL) {
return result;
}
-
int
-path_to_handle (
+path_to_handle(
char *path, /* input, path to convert */
void **hanp, /* output, pointer to data */
size_t *hlen) /* output, size of returned data */
comarg_t obj;
fd = open(path, O_RDONLY);
-
- if (fd < 0) {
- perror(path);
- exit(1);
- }
+ if (fd < 0)
+ return -1;
obj.path = path;
-
- result = obj_to_handle (path, fd, XFS_IOC_PATH_TO_HANDLE, obj, hanp, hlen);
-
+ result = obj_to_handle(path, fd, XFS_IOC_PATH_TO_HANDLE,
+ obj, hanp, hlen);
close(fd);
-
return result;
}
-
int
-handle_to_fshandle (
+handle_to_fshandle(
void *hanp,
size_t hlen,
void **fshanp,
{
if (hlen < FSIDSIZE)
return EINVAL;
-
- *fshanp = malloc (FSIDSIZE);
-
+ *fshanp = malloc(FSIDSIZE);
if (*fshanp == NULL)
return ENOMEM;
-
*fshlen = FSIDSIZE;
-
memcpy(*fshanp, hanp, FSIDSIZE);
-
return 0;
}
-
static int
handle_to_fsfd(void *hanp, char **path)
{
return fdhp->fsfd;
}
}
+ errno = EBADF;
return -1;
}
-
static int
-obj_to_handle (
+obj_to_handle(
char *fspath,
int fsfd,
unsigned int opcode,
}
memcpy(*hanp, hbuf, (int) *hlen);
-
return 0;
}
-
int
-open_by_handle (
+open_by_handle(
void *hanp,
size_t hlen,
int rw)
char *path;
xfs_fsop_handlereq_t hreq;
- if ((fd = handle_to_fsfd(hanp, &path)) < 0) {
- errno = EBADF;
+ if ((fd = handle_to_fsfd(hanp, &path)) < 0)
return -1;
- }
hreq.fd = 0;
hreq.path = NULL;
}
int
-readlink_by_handle (
+readlink_by_handle(
void *hanp,
size_t hlen,
void *buf,
char *path;
xfs_fsop_handlereq_t hreq;
-
- if ((fd = handle_to_fsfd(hanp, &path)) < 0) {
- errno = EBADF;
+ if ((fd = handle_to_fsfd(hanp, &path)) < 0)
return -1;
- }
hreq.fd = 0;
hreq.path = NULL;
char *path;
xfs_fsop_attrmulti_handlereq_t amhreq;
- if ((fd = handle_to_fsfd(hanp, &path)) < 0) {
- errno = EBADF;
+ if ((fd = handle_to_fsfd(hanp, &path)) < 0)
return -1;
- }
amhreq.hreq.fd = 0;
amhreq.hreq.path = NULL;
char *path;
xfs_fsop_attrlist_handlereq_t alhreq;
- if ((fd = handle_to_fsfd(hanp, &path)) < 0) {
- errno = EBADF;
+ if ((fd = handle_to_fsfd(hanp, &path)) < 0)
return -1;
- }
alhreq.hreq.fd = 0;
alhreq.hreq.path = NULL;
}
int
-fssetdm_by_handle (
+fssetdm_by_handle(
void *hanp,
size_t hlen,
struct fsdmidata *fsdmidata)
char *path;
xfs_fsop_setdm_handlereq_t dmhreq;
-
- if ((fd = handle_to_fsfd(hanp, &path)) < 0) {
- errno = EBADF;
+ if ((fd = handle_to_fsfd(hanp, &path)) < 0)
return -1;
- }
dmhreq.hreq.fd = 0;
dmhreq.hreq.path = NULL;
return xfsctl(path, fd, XFS_IOC_FSSETDM_BY_HANDLE, &dmhreq);
}
-/*ARGSUSED*/
void
-free_handle (
+free_handle(
void *hanp,
size_t hlen)
{
- free (hanp);
+ free(hanp);
}