aboutsummaryrefslogtreecommitdiffstats
path: root/ports
diff options
context:
space:
mode:
authorPeter Seebach <peter.seebach@windriver.com>2012-08-02 18:09:17 -0500
committerPeter Seebach <peter.seebach@windriver.com>2012-08-02 18:33:53 -0500
commit400e1a09e98cc11e18e418ece0a78acfd226b381 (patch)
tree07d7a682d3dbf89033b1069c3e0316d29b398aa5 /ports
parent9b792e4cb91bc22374f47d0b0902dbc4ecd7d6dd (diff)
downloadpseudo-400e1a09e98cc11e18e418ece0a78acfd226b381.tar.gz
pseudo-400e1a09e98cc11e18e418ece0a78acfd226b381.tar.bz2
pseudo-400e1a09e98cc11e18e418ece0a78acfd226b381.zip
Remove the _plain thing, use PSEUDO_STATBUF everywhere.
The _plain thing was added because of clashes between Linux ("struct stat64 for 64-bit file sizes") and Darwin ("struct stat is already 64 bits"). But it turns out not to be enough, because stat will *fail* if it cannot represent a file size, so when something like unlinkat() calls a non-64-bit stat in order to determine whether a file exists, it gets the wrong answer if the file is over 2GB in size. Solution: Continue using PSEUDO_STATBUF, and also provide defines for base_stat() which can be either real_stat() or real_stat64(), etcetera. This eliminates any reason to need the _plain functions. It also suggests that the other real___fxstatat() calls should someday go away because that is an ugly, ugly, implementation detail. As part of testing this, fix up some bitrot which affected Darwin (such as the continue outside of a loop, but inside an #ifdef; that was left over from the conversion of init_one_wrapper to a separate function).
Diffstat (limited to 'ports')
-rw-r--r--ports/darwin/guts/fcntl.c4
-rw-r--r--ports/darwin/guts/open.c4
-rw-r--r--ports/unix/guts/access.c6
-rw-r--r--ports/unix/guts/fchmod.c8
-rw-r--r--ports/unix/guts/fchmodat.c14
-rw-r--r--ports/unix/guts/fchown.c12
-rw-r--r--ports/unix/guts/fchownat.c16
-rw-r--r--ports/unix/guts/fopen.c14
-rw-r--r--ports/unix/guts/freopen.c12
-rw-r--r--ports/unix/guts/link.c12
-rw-r--r--ports/unix/guts/mkdirat.c10
-rw-r--r--ports/unix/guts/mkdtemp.c8
-rw-r--r--ports/unix/guts/mknodat.c10
-rw-r--r--ports/unix/guts/mkstemp.c12
-rw-r--r--ports/unix/guts/opendir.c10
-rw-r--r--ports/unix/guts/remove.c6
-rw-r--r--ports/unix/guts/rename.c18
-rw-r--r--ports/unix/guts/renameat.c20
-rw-r--r--ports/unix/guts/rmdir.c12
-rw-r--r--ports/unix/guts/symlinkat.c10
-rw-r--r--ports/unix/guts/unlinkat.c14
21 files changed, 115 insertions, 117 deletions
diff --git a/ports/darwin/guts/fcntl.c b/ports/darwin/guts/fcntl.c
index ef42b33..1cc8258 100644
--- a/ports/darwin/guts/fcntl.c
+++ b/ports/darwin/guts/fcntl.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011 Wind River Systems; see
+ * Copyright (c) 2011, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* int fcntl(int fd, int cmd, ... { struct flock *lock })
@@ -7,8 +7,6 @@
*/
int save_errno;
long long flag = 0;
- void *ptr = 0;
- off_t off = 0;
va_start(ap, cmd);
flag = va_arg(ap, long long);
diff --git a/ports/darwin/guts/open.c b/ports/darwin/guts/open.c
index dba6800..1ed5882 100644
--- a/ports/darwin/guts/open.c
+++ b/ports/darwin/guts/open.c
@@ -1,12 +1,12 @@
/*
- * Copyright (c) 2011 Wind River Systems; see
+ * Copyright (c) 2011, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* int open(const char *path, int flags, ... { int mode })
* int rc = -1;
*/
- struct stat buf = { 0 };
+ struct stat buf = { };
int existed = 1;
int save_errno;
diff --git a/ports/unix/guts/access.c b/ports/unix/guts/access.c
index 5a92957..0093a3b 100644
--- a/ports/unix/guts/access.c
+++ b/ports/unix/guts/access.c
@@ -1,17 +1,17 @@
/*
- * Copyright (c) 2010 Wind River Systems; see
+ * Copyright (c) 2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
* wrap_access(const char *path, int mode) {
* int rc = -1;
*/
- struct stat buf;
+ PSEUDO_STATBUF buf;
/* note: no attempt to handle the case where user isn't
* root.
*/
- rc = real_stat(path, &buf);
+ rc = base_stat(path, &buf);
if (rc == -1)
return rc;
diff --git a/ports/unix/guts/fchmod.c b/ports/unix/guts/fchmod.c
index 7c6a6ad..1d4fae8 100644
--- a/ports/unix/guts/fchmod.c
+++ b/ports/unix/guts/fchmod.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008-2010 Wind River Systems; see
+ * Copyright (c) 2008-2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
@@ -7,15 +7,15 @@
* int rc = -1;
*/
pseudo_msg_t *msg;
- struct stat buf;
+ PSEUDO_STATBUF buf;
int save_errno = errno;
- if (real_fstat(fd, &buf) == -1) {
+ if (base_fstat(fd, &buf) == -1) {
/* can't stat it, can't chmod it */
return -1;
}
buf.st_mode = (buf.st_mode & ~07777) | (mode & 07777);
- msg = pseudo_client_op_plain(OP_FCHMOD, 0, fd, -1, 0, &buf);
+ msg = pseudo_client_op(OP_FCHMOD, 0, fd, -1, 0, &buf);
real_fchmod(fd, PSEUDO_FS_MODE(mode, S_ISDIR(buf.st_mode)));
if (msg && msg->result != RESULT_SUCCEED) {
errno = EPERM;
diff --git a/ports/unix/guts/fchmodat.c b/ports/unix/guts/fchmodat.c
index 5095c77..a14d1b1 100644
--- a/ports/unix/guts/fchmodat.c
+++ b/ports/unix/guts/fchmodat.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008-2010 Wind River Systems; see
+ * Copyright (c) 2008-2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
@@ -7,7 +7,7 @@
* int rc = -1;
*/
pseudo_msg_t *msg;
- struct stat buf;
+ PSEUDO_STATBUF buf;
int save_errno;
#ifdef PSEUDO_NO_REAL_AT_FUNCTIONS
@@ -16,12 +16,12 @@
return -1;
}
if (flags & AT_SYMLINK_NOFOLLOW) {
- rc = real_lstat(path, &buf);
+ rc = base_lstat(path, &buf);
} else {
- rc = real_stat(path, &buf);
+ rc = base_stat(path, &buf);
}
#else
- rc = real___fxstatat(_STAT_VER, dirfd, path, &buf, flags);
+ rc = base_fstatat(dirfd, path, &buf, flags);
#endif
if (rc == -1) {
return rc;
@@ -36,7 +36,7 @@
/* purely for debugging purposes: check whether file
* is already in database.
*/
- msg = pseudo_client_op_plain(OP_STAT, 0, -1, -1, path, &buf);
+ msg = pseudo_client_op(OP_STAT, 0, -1, -1, path, &buf);
if (!msg || msg->result != RESULT_SUCCEED) {
pseudo_debug(2, "chmodat to 0%o on %d/%s, ino %llu, new file.\n",
mode, dirfd, path, (unsigned long long) buf.st_ino);
@@ -57,7 +57,7 @@
*/
buf.st_mode = (buf.st_mode & ~07777) | (mode & 07777);
- msg = pseudo_client_op_plain(OP_CHMOD, 0, -1, dirfd, path, &buf);
+ msg = pseudo_client_op(OP_CHMOD, 0, -1, dirfd, path, &buf);
if (msg && msg->result != RESULT_SUCCEED) {
errno = EPERM;
rc = -1;
diff --git a/ports/unix/guts/fchown.c b/ports/unix/guts/fchown.c
index c36a869..72a1e46 100644
--- a/ports/unix/guts/fchown.c
+++ b/ports/unix/guts/fchown.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008-2010 Wind River Systems; see
+ * Copyright (c) 2008-2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
@@ -7,10 +7,10 @@
* int rc = -1;
*/
pseudo_msg_t *msg;
- struct stat buf;
+ PSEUDO_STATBUF buf;
int save_errno;
- if (real_fstat(fd, &buf) == -1) {
+ if (base_fstat(fd, &buf) == -1) {
save_errno = errno;
pseudo_debug(2, "fchown failing because fstat failed: %s\n",
strerror(errno));
@@ -18,11 +18,11 @@
return -1;
}
if (owner == (uid_t) -1 || group == (gid_t) -1) {
- msg = pseudo_client_op_plain(OP_STAT, 0, fd, -1, NULL, &buf);
+ msg = pseudo_client_op(OP_STAT, 0, fd, -1, NULL, &buf);
/* copy in any existing values... */
if (msg) {
if (msg->result == RESULT_SUCCEED) {
- pseudo_stat_msg_plain(&buf, msg);
+ pseudo_stat_msg(&buf, msg);
} else {
pseudo_debug(2, "fchown fd %d, ino %llu, unknown file.\n",
fd, (unsigned long long) buf.st_ino);
@@ -41,7 +41,7 @@
}
pseudo_debug(2, "fchown, fd %d: %d:%d -> %d:%d\n",
fd, owner, group, buf.st_uid, buf.st_gid);
- msg = pseudo_client_op_plain(OP_FCHOWN, 0, fd, -1, 0, &buf);
+ msg = pseudo_client_op(OP_FCHOWN, 0, fd, -1, 0, &buf);
if (msg && msg->result != RESULT_SUCCEED) {
errno = EPERM;
rc = -1;
diff --git a/ports/unix/guts/fchownat.c b/ports/unix/guts/fchownat.c
index 9585fb0..8d3ee05 100644
--- a/ports/unix/guts/fchownat.c
+++ b/ports/unix/guts/fchownat.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008-2010 Wind River Systems; see
+ * Copyright (c) 2008-2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
@@ -7,7 +7,7 @@
* int rc = -1;
*/
pseudo_msg_t *msg;
- struct stat buf;
+ PSEUDO_STATBUF buf;
int save_errno;
int doing_link = 0;
@@ -17,12 +17,12 @@
return -1;
}
if (flags & AT_SYMLINK_NOFOLLOW) {
- rc = real_lstat(path, &buf);
+ rc = base_lstat(path, &buf);
} else {
- rc = real_stat(path, &buf);
+ rc = base_stat(path, &buf);
}
#else
- rc = real___fxstatat(_STAT_VER, dirfd, path, &buf, flags);
+ rc = base_fstatat(dirfd, path, &buf, flags);
#endif
if (rc == -1) {
return rc;
@@ -34,11 +34,11 @@
save_errno = errno;
if (owner == (uid_t) -1 || group == (gid_t) -1) {
- msg = pseudo_client_op_plain(OP_STAT, 0, -1, -1, path, &buf);
+ msg = pseudo_client_op(OP_STAT, 0, -1, -1, path, &buf);
/* copy in any existing values... */
if (msg) {
if (msg->result == RESULT_SUCCEED) {
- pseudo_stat_msg_plain(&buf, msg);
+ pseudo_stat_msg(&buf, msg);
} else {
pseudo_debug(2, "chownat to %d:%d on %d/%s, ino %llu, new file.\n",
owner, group, dirfd, path,
@@ -53,7 +53,7 @@
if (group != (gid_t) -1) {
buf.st_gid = group;
}
- msg = pseudo_client_op_plain(OP_CHOWN, 0, -1, dirfd, path, &buf);
+ msg = pseudo_client_op(OP_CHOWN, 0, -1, dirfd, path, &buf);
if (msg && msg->result != RESULT_SUCCEED) {
errno = EPERM;
rc = -1;
diff --git a/ports/unix/guts/fopen.c b/ports/unix/guts/fopen.c
index 9dd6c33..c7b8da5 100644
--- a/ports/unix/guts/fopen.c
+++ b/ports/unix/guts/fopen.c
@@ -1,14 +1,14 @@
/*
- * Copyright (c) 2008-2010 Wind River Systems; see
+ * Copyright (c) 2008-2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static FILE *
* wrap_fopen(const char *path, const char *mode) {
* FILE * rc = 0;
*/
- struct stat buf;
+ PSEUDO_STATBUF buf;
int save_errno;
- int existed = (real_stat(path, &buf) != -1);
+ int existed = (base_stat(path, &buf) != -1);
rc = real_fopen(path, mode);
save_errno = errno;
@@ -17,15 +17,15 @@
int fd = fileno(rc);
pseudo_debug(2, "fopen '%s': fd %d <FILE %p>\n", path, fd, (void *) rc);
- if (real_fstat(fd, &buf) != -1) {
+ if (base_fstat(fd, &buf) != -1) {
if (!existed) {
- pseudo_client_op_plain(OP_CREAT, 0, -1, -1, path, &buf);
+ pseudo_client_op(OP_CREAT, 0, -1, -1, path, &buf);
}
- pseudo_client_op_plain(OP_OPEN, pseudo_access_fopen(mode), fd, -1, path, &buf);
+ pseudo_client_op(OP_OPEN, pseudo_access_fopen(mode), fd, -1, path, &buf);
} else {
pseudo_debug(1, "fopen (fd %d) succeeded, but fstat failed (%s).\n",
fd, strerror(errno));
- pseudo_client_op_plain(OP_OPEN, pseudo_access_fopen(mode), fd, -1, path, 0);
+ pseudo_client_op(OP_OPEN, pseudo_access_fopen(mode), fd, -1, path, 0);
}
errno = save_errno;
}
diff --git a/ports/unix/guts/freopen.c b/ports/unix/guts/freopen.c
index b5a7bfc..eb788b3 100644
--- a/ports/unix/guts/freopen.c
+++ b/ports/unix/guts/freopen.c
@@ -6,9 +6,9 @@
* wrap_freopen(const char *path, const char *mode, FILE *stream) {
* FILE * rc = NULL;
*/
- struct stat buf;
+ PSEUDO_STATBUF buf;
int save_errno;
- int existed = (real_stat(path, &buf) != -1);
+ int existed = (base_stat(path, &buf) != -1);
rc = real_freopen(path, mode, stream);
save_errno = errno;
@@ -17,15 +17,15 @@
int fd = fileno(rc);
pseudo_debug(2, "freopen '%s': fd %d\n", path, fd);
- if (real_fstat(fd, &buf) != -1) {
+ if (base_fstat(fd, &buf) != -1) {
if (!existed) {
- pseudo_client_op_plain(OP_CREAT, 0, -1, -1, path, &buf);
+ pseudo_client_op(OP_CREAT, 0, -1, -1, path, &buf);
}
- pseudo_client_op_plain(OP_OPEN, pseudo_access_fopen(mode), fd, -1, path, &buf);
+ pseudo_client_op(OP_OPEN, pseudo_access_fopen(mode), fd, -1, path, &buf);
} else {
pseudo_debug(1, "fopen (fd %d) succeeded, but stat failed (%s).\n",
fd, strerror(errno));
- pseudo_client_op_plain(OP_OPEN, pseudo_access_fopen(mode), fd, -1, path, 0);
+ pseudo_client_op(OP_OPEN, pseudo_access_fopen(mode), fd, -1, path, 0);
}
errno = save_errno;
}
diff --git a/ports/unix/guts/link.c b/ports/unix/guts/link.c
index 81316e2..09551ac 100644
--- a/ports/unix/guts/link.c
+++ b/ports/unix/guts/link.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008-2010 Wind River Systems; see
+ * Copyright (c) 2008-2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
@@ -7,7 +7,7 @@
* int rc = -1;
*/
pseudo_msg_t *msg;
- struct stat buf;
+ PSEUDO_STATBUF buf;
rc = real_link(oldpath, newpath);
if (rc == 0) {
@@ -19,16 +19,16 @@
* files they link to. This is contraPOSIX, but
* it's apparently useful.
*/
- real_lstat(oldpath, &buf);
+ base_lstat(oldpath, &buf);
/* a link should copy the existing database entry, if
* there is one. OP_LINK is also used to insert unseen
* files, though, so it can't be implicit.
*/
- msg = pseudo_client_op_plain(OP_STAT, 0, -1, -1, oldpath, &buf);
+ msg = pseudo_client_op(OP_STAT, 0, -1, -1, oldpath, &buf);
if (msg) {
- pseudo_stat_msg_plain(&buf, msg);
+ pseudo_stat_msg(&buf, msg);
}
- pseudo_client_op_plain(OP_LINK, 0, -1, -1, newpath, &buf);
+ pseudo_client_op(OP_LINK, 0, -1, -1, newpath, &buf);
}
/* return rc;
diff --git a/ports/unix/guts/mkdirat.c b/ports/unix/guts/mkdirat.c
index 97141fc..e846b70 100644
--- a/ports/unix/guts/mkdirat.c
+++ b/ports/unix/guts/mkdirat.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008-2010 Wind River Systems; see
+ * Copyright (c) 2008-2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
@@ -16,16 +16,16 @@
rc = real_mkdirat(dirfd, path, PSEUDO_FS_MODE(mode, 1));
#endif
if (rc != -1) {
- struct stat buf;
+ PSEUDO_STATBUF buf;
int stat_rc;
#ifdef PSEUDO_NO_REAL_AT_FUNCTIONS
- stat_rc = real_lstat(path, &buf);
+ stat_rc = base_lstat(path, &buf);
#else
- stat_rc = real___fxstatat(_STAT_VER, dirfd, path, &buf, AT_SYMLINK_NOFOLLOW);
+ stat_rc = base_fstatat(dirfd, path, &buf, AT_SYMLINK_NOFOLLOW);
#endif
if (stat_rc != -1) {
- pseudo_client_op_plain(OP_MKDIR, 0, -1, dirfd, path, &buf);
+ pseudo_client_op(OP_MKDIR, 0, -1, dirfd, path, &buf);
} else {
pseudo_debug(1, "mkdir of %s succeeded, but stat failed: %s\n",
path, strerror(errno));
diff --git a/ports/unix/guts/mkdtemp.c b/ports/unix/guts/mkdtemp.c
index 92d4da7..194f0cb 100644
--- a/ports/unix/guts/mkdtemp.c
+++ b/ports/unix/guts/mkdtemp.c
@@ -1,12 +1,12 @@
/*
- * Copyright (c) 2010 Wind River Systems; see
+ * Copyright (c) 2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static char *
* wrap_mkdtemp(char *template) {
* char * rc = NULL;
*/
- struct stat buf;
+ PSEUDO_STATBUF buf;
int save_errno;
size_t len;
char *tmp_template;
@@ -29,8 +29,8 @@
if (rc != NULL) {
save_errno = errno;
- if (real_stat(rc, &buf) != -1) {
- pseudo_client_op_plain(OP_CREAT, 0, -1, -1, tmp_template, &buf);
+ if (base_stat(rc, &buf) != -1) {
+ pseudo_client_op(OP_CREAT, 0, -1, -1, tmp_template, &buf);
} else {
pseudo_debug(1, "mkdtemp (path %s) succeeded, but fstat failed (%s).\n",
rc, strerror(errno));
diff --git a/ports/unix/guts/mknodat.c b/ports/unix/guts/mknodat.c
index 2b24cd0..32a4d5b 100644
--- a/ports/unix/guts/mknodat.c
+++ b/ports/unix/guts/mknodat.c
@@ -7,16 +7,16 @@
*/
pseudo_msg_t *msg;
- struct stat buf;
+ PSEUDO_STATBUF buf;
#ifdef PSEUDO_NO_REAL_AT_FUNCTIONS
if (dirfd != AT_FDCWD) {
errno = ENOSYS;
return -1;
}
- rc = real_stat(path, &buf);
+ rc = base_stat(path, &buf);
#else
- rc = real___fxstatat(_STAT_VER, dirfd, path, &buf, AT_SYMLINK_NOFOLLOW);
+ rc = base_fstatat(dirfd, path, &buf, AT_SYMLINK_NOFOLLOW);
#endif
if (rc != -1) {
/* if we can stat the file, you can't mknod it */
@@ -33,7 +33,7 @@
if (rc == -1) {
return -1;
}
- real_fstat(rc, &buf);
+ base_fstat(rc, &buf);
/* mknod does not really open the file. We don't have
* to use wrap_close because we've never exposed this file
* descriptor to the client code.
@@ -44,7 +44,7 @@
buf.st_mode = (PSEUDO_DB_MODE(buf.st_mode, mode) & 07777) |
(mode & ~07777);
buf.st_rdev = dev;
- msg = pseudo_client_op_plain(OP_MKNOD, 0, -1, dirfd, path, &buf);
+ msg = pseudo_client_op(OP_MKNOD, 0, -1, dirfd, path, &buf);
if (msg && msg->result != RESULT_SUCCEED) {
errno = EPERM;
rc = -1;
diff --git a/ports/unix/guts/mkstemp.c b/ports/unix/guts/mkstemp.c
index 46c0be1..2ad3f19 100644
--- a/ports/unix/guts/mkstemp.c
+++ b/ports/unix/guts/mkstemp.c
@@ -1,12 +1,12 @@
/*
- * Copyright (c) 2008-2010 Wind River Systems; see
+ * Copyright (c) 2008-2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
* wrap_mkstemp(char *template) {
* int rc = -1;
*/
- struct stat buf;
+ PSEUDO_STATBUF buf;
int save_errno;
size_t len;
char *tmp_template;
@@ -29,13 +29,13 @@
if (rc != -1) {
save_errno = errno;
- if (real_fstat(rc, &buf) != -1) {
- pseudo_client_op_plain(OP_CREAT, 0, -1, -1, tmp_template, &buf);
- pseudo_client_op_plain(OP_OPEN, PSA_READ | PSA_WRITE, rc, -1, tmp_template, &buf);
+ if (base_fstat(rc, &buf) != -1) {
+ pseudo_client_op(OP_CREAT, 0, -1, -1, tmp_template, &buf);
+ pseudo_client_op(OP_OPEN, PSA_READ | PSA_WRITE, rc, -1, tmp_template, &buf);
} else {
pseudo_debug(1, "mkstemp (fd %d) succeeded, but fstat failed (%s).\n",
rc, strerror(errno));
- pseudo_client_op_plain(OP_OPEN, PSA_READ | PSA_WRITE, rc, -1, tmp_template, 0);
+ pseudo_client_op(OP_OPEN, PSA_READ | PSA_WRITE, rc, -1, tmp_template, 0);
}
errno = save_errno;
}
diff --git a/ports/unix/guts/opendir.c b/ports/unix/guts/opendir.c
index e69717e..31f5738 100644
--- a/ports/unix/guts/opendir.c
+++ b/ports/unix/guts/opendir.c
@@ -1,12 +1,12 @@
/*
- * Copyright (c) 2010 Wind River Systems; see
+ * Copyright (c) 2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static DIR *
* wrap_opendir(const char *path) {
* DIR * rc = NULL;
*/
- struct stat buf;
+ PSEUDO_STATBUF buf;
int save_errno;
rc = real_opendir(path);
@@ -14,12 +14,12 @@
int fd;
save_errno = errno;
fd = dirfd(rc);
- if (real_fstat(fd, &buf) == -1) {
+ if (base_fstat(fd, &buf) == -1) {
pseudo_debug(1, "diropen (fd %d) succeeded, but fstat failed (%s).\n",
fd, strerror(errno));
- pseudo_client_op_plain(OP_OPEN, PSA_READ, fd, -1, path, 0);
+ pseudo_client_op(OP_OPEN, PSA_READ, fd, -1, path, 0);
} else {
- pseudo_client_op_plain(OP_OPEN, PSA_READ, fd, -1, path, &buf);
+ pseudo_client_op(OP_OPEN, PSA_READ, fd, -1, path, &buf);
}
diff --git a/ports/unix/guts/remove.c b/ports/unix/guts/remove.c
index 902a640..4e2cecb 100644
--- a/ports/unix/guts/remove.c
+++ b/ports/unix/guts/remove.c
@@ -1,13 +1,13 @@
/*
- * Copyright (c) 2008-2010 Wind River Systems; see
+ * Copyright (c) 2008-2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
* wrap_remove(const char *path) {
* int rc = -1;
*/
- struct stat buf;
- if (real_lstat(path, &buf) == -1) {
+ PSEUDO_STATBUF buf;
+ if (base_lstat(path, &buf) == -1) {
errno = ENOENT;
return -1;
}
diff --git a/ports/unix/guts/rename.c b/ports/unix/guts/rename.c
index 04892c1..1473a8d 100644
--- a/ports/unix/guts/rename.c
+++ b/ports/unix/guts/rename.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008-2010 Wind River Systems; see
+ * Copyright (c) 2008-2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
@@ -7,7 +7,7 @@
* int rc = -1;
*/
pseudo_msg_t *msg;
- struct stat oldbuf, newbuf;
+ PSEUDO_STATBUF oldbuf, newbuf;
int oldrc, newrc;
int save_errno;
int old_db_entry = 0;
@@ -23,14 +23,14 @@
save_errno = errno;
- newrc = real_lstat(newpath, &newbuf);
- oldrc = real_lstat(oldpath, &oldbuf);
+ newrc = base_lstat(newpath, &newbuf);
+ oldrc = base_lstat(oldpath, &oldbuf);
errno = save_errno;
/* newpath must be removed. */
/* as with unlink, we have to mark that the file may get deleted */
- msg = pseudo_client_op_plain(OP_MAY_UNLINK, 0, -1, -1, newpath, newrc ? NULL : &newbuf);
+ msg = pseudo_client_op(OP_MAY_UNLINK, 0, -1, -1, newpath, newrc ? NULL : &newbuf);
if (msg && msg->result == RESULT_SUCCEED)
old_db_entry = 1;
rc = real_rename(oldpath, newpath);
@@ -40,10 +40,10 @@
/* since we failed, that wasn't really unlinked -- put
* it back.
*/
- pseudo_client_op_plain(OP_CANCEL_UNLINK, 0, -1, -1, newpath, &newbuf);
+ pseudo_client_op(OP_CANCEL_UNLINK, 0, -1, -1, newpath, &newbuf);
} else {
/* confirm that the file was removed */
- pseudo_client_op_plain(OP_DID_UNLINK, 0, -1, -1, newpath, &newbuf);
+ pseudo_client_op(OP_DID_UNLINK, 0, -1, -1, newpath, &newbuf);
}
}
if (rc == -1) {
@@ -86,9 +86,9 @@
}
pseudo_debug(1, "creating new '%s' [%llu] to rename\n",
oldpath, (unsigned long long) oldbuf.st_ino);
- pseudo_client_op_plain(OP_LINK, 0, -1, -1, oldpath, &oldbuf);
+ pseudo_client_op(OP_LINK, 0, -1, -1, oldpath, &oldbuf);
}
- pseudo_client_op_plain(OP_RENAME, 0, -1, -1, newpath, &oldbuf, oldpath);
+ pseudo_client_op(OP_RENAME, 0, -1, -1, newpath, &oldbuf, oldpath);
errno = save_errno;
/* return rc;
diff --git a/ports/unix/guts/renameat.c b/ports/unix/guts/renameat.c
index f13cd1e..d8138bb 100644
--- a/ports/unix/guts/renameat.c
+++ b/ports/unix/guts/renameat.c
@@ -7,7 +7,7 @@
* int rc = -1;
*/
pseudo_msg_t *msg;
- struct stat oldbuf, newbuf;
+ PSEUDO_STATBUF oldbuf, newbuf;
int oldrc, newrc;
int save_errno;
int old_db_entry = 0;
@@ -31,18 +31,18 @@
save_errno = errno;
#ifdef PSEUDO_NO_REAL_AT_FUNCTIONS
- newrc = real_lstat(newpath, &newbuf);
- oldrc = real_lstat(oldpath, &oldbuf);
+ newrc = base_lstat(newpath, &newbuf);
+ oldrc = base_lstat(oldpath, &oldbuf);
#else
- oldrc = real___fxstatat(_STAT_VER, olddirfd, oldpath, &oldbuf, AT_SYMLINK_NOFOLLOW);
- newrc = real___fxstatat(_STAT_VER, newdirfd, newpath, &newbuf, AT_SYMLINK_NOFOLLOW);
+ oldrc = base_fstatat(olddirfd, oldpath, &oldbuf, AT_SYMLINK_NOFOLLOW);
+ newrc = base_fstatat(newdirfd, newpath, &newbuf, AT_SYMLINK_NOFOLLOW);
#endif
errno = save_errno;
/* newpath must be removed. */
/* as with unlink, we have to mark that the file may get deleted */
- msg = pseudo_client_op_plain(OP_MAY_UNLINK, 0, -1, newdirfd, newpath, newrc ? NULL : &newbuf);
+ msg = pseudo_client_op(OP_MAY_UNLINK, 0, -1, newdirfd, newpath, newrc ? NULL : &newbuf);
if (msg && msg->result == RESULT_SUCCEED)
old_db_entry = 1;
rc = real_renameat(olddirfd, oldpath, newdirfd, newpath);
@@ -52,10 +52,10 @@
/* since we failed, that wasn't really unlinked -- put
* it back.
*/
- pseudo_client_op_plain(OP_CANCEL_UNLINK, 0, -1, newdirfd, newpath, &newbuf);
+ pseudo_client_op(OP_CANCEL_UNLINK, 0, -1, newdirfd, newpath, &newbuf);
} else {
/* confirm that the file was removed */
- pseudo_client_op_plain(OP_DID_UNLINK, 0, -1, newdirfd, newpath, &newbuf);
+ pseudo_client_op(OP_DID_UNLINK, 0, -1, newdirfd, newpath, &newbuf);
}
}
if (rc == -1) {
@@ -98,12 +98,12 @@
}
pseudo_debug(1, "creating new '%s' [%llu] to rename\n",
oldpath, (unsigned long long) oldbuf.st_ino);
- pseudo_client_op_plain(OP_LINK, 0, -1, olddirfd, oldpath, &oldbuf);
+ pseudo_client_op(OP_LINK, 0, -1, olddirfd, oldpath, &oldbuf);
}
/* special case: use 'fd' for olddirfd, because
* we know it has no other meaning for RENAME
*/
- pseudo_client_op_plain(OP_RENAME, 0, olddirfd, newdirfd, newpath, &oldbuf, oldpath);
+ pseudo_client_op(OP_RENAME, 0, olddirfd, newdirfd, newpath, &oldbuf, oldpath);
errno = save_errno;
/* return rc;
diff --git a/ports/unix/guts/rmdir.c b/ports/unix/guts/rmdir.c
index 7307fcd..a47e01c 100644
--- a/ports/unix/guts/rmdir.c
+++ b/ports/unix/guts/rmdir.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008-2010 Wind River Systems; see
+ * Copyright (c) 2008-2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
@@ -7,25 +7,25 @@
* int rc = -1;
*/
pseudo_msg_t *msg;
- struct stat buf;
+ PSEUDO_STATBUF buf;
int save_errno;
int old_db_entry = 0;
- rc = real_lstat(path, &buf);
+ rc = base_lstat(path, &buf);
if (rc == -1) {
return rc;
}
- msg = pseudo_client_op_plain(OP_MAY_UNLINK, 0, -1, -1, path, &buf);
+ msg = pseudo_client_op(OP_MAY_UNLINK, 0, -1, -1, path, &buf);
if (msg && msg->result == RESULT_SUCCEED)
old_db_entry = 1;
rc = real_rmdir(path);
if (old_db_entry) {
if (rc == -1) {
save_errno = errno;
- pseudo_client_op_plain(OP_CANCEL_UNLINK, 0, -1, -1, path, &buf);
+ pseudo_client_op(OP_CANCEL_UNLINK, 0, -1, -1, path, &buf);
errno = save_errno;
} else {
- pseudo_client_op_plain(OP_DID_UNLINK, 0, -1, -1, path, &buf);
+ pseudo_client_op(OP_DID_UNLINK, 0, -1, -1, path, &buf);
}
} else {
pseudo_debug(1, "rmdir on <%s>, not in database, no effect.\n", path);
diff --git a/ports/unix/guts/symlinkat.c b/ports/unix/guts/symlinkat.c
index 9912c31..1346db1 100644
--- a/ports/unix/guts/symlinkat.c
+++ b/ports/unix/guts/symlinkat.c
@@ -1,12 +1,12 @@
/*
- * Copyright (c) 2008-2010 Wind River Systems; see
+ * Copyright (c) 2008-2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
* wrap_symlinkat(const char *oldname, int dirfd, const char *newpath) {
* int rc = -1;
*/
- struct stat buf;
+ PSEUDO_STATBUF buf;
char *roldname = 0;
if (oldname[0] == '/' && pseudo_chroot_len && !pseudo_nosymlinkexp) {
@@ -30,9 +30,9 @@
return rc;
}
#ifdef PSEUDO_NO_REAL_AT_FUNCTIONS
- rc = real_lstat(newpath, &buf);
+ rc = base_lstat(newpath, &buf);
#else
- rc = real___fxstatat(_STAT_VER, dirfd, newpath, &buf, AT_SYMLINK_NOFOLLOW);
+ rc = base_fstatat(dirfd, newpath, &buf, AT_SYMLINK_NOFOLLOW);
#endif
if (rc == -1) {
int save_errno = errno;
@@ -43,7 +43,7 @@
return rc;
}
/* just record the entry */
- pseudo_client_op_plain(OP_SYMLINK, 0, -1, dirfd, newpath, &buf);
+ pseudo_client_op(OP_SYMLINK, 0, -1, dirfd, newpath, &buf);
free(roldname);
diff --git a/ports/unix/guts/unlinkat.c b/ports/unix/guts/unlinkat.c
index 7b51ab9..8a359d1 100644
--- a/ports/unix/guts/unlinkat.c
+++ b/ports/unix/guts/unlinkat.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008-2010 Wind River Systems; see
+ * Copyright (c) 2008-2010, 2012 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
@@ -8,7 +8,7 @@
*/
pseudo_msg_t *msg;
int save_errno;
- struct stat buf;
+ PSEUDO_STATBUF buf;
int old_db_entry;
#ifdef PSEUDO_NO_REAL_AT_FUNCTIONS
@@ -29,14 +29,14 @@
#endif
#ifdef PSEUDO_NO_REAL_AT_FUNCTIONS
- rc = real_lstat(path, &buf);
+ rc = base_lstat(path, &buf);
#else
- rc = real___fxstatat(_STAT_VER, dirfd, path, &buf, AT_SYMLINK_NOFOLLOW);
+ rc = base_fstatat(dirfd, path, &buf, AT_SYMLINK_NOFOLLOW);
#endif
if (rc == -1) {
return rc;
}
- msg = pseudo_client_op_plain(OP_MAY_UNLINK, 0, -1, dirfd, path, &buf);
+ msg = pseudo_client_op(OP_MAY_UNLINK, 0, -1, dirfd, path, &buf);
if (msg && msg->result == RESULT_SUCCEED)
old_db_entry = 1;
#ifdef PSEUDO_NO_REAL_AT_FUNCTIONS
@@ -47,10 +47,10 @@
if (old_db_entry) {
if (rc == -1) {
save_errno = errno;
- pseudo_client_op_plain(OP_CANCEL_UNLINK, 0, -1, -1, path, &buf);
+ pseudo_client_op(OP_CANCEL_UNLINK, 0, -1, -1, path, &buf);
errno = save_errno;
} else {
- pseudo_client_op_plain(OP_DID_UNLINK, 0, -1, -1, path, &buf);
+ pseudo_client_op(OP_DID_UNLINK, 0, -1, -1, path, &buf);
}
} else {
pseudo_debug(1, "unlink on <%s>, not in database, no effect.\n", path);