aboutsummaryrefslogtreecommitdiff
path: root/lang/ifc7
diff options
context:
space:
mode:
authorMaho Nakata <maho@FreeBSD.org>2004-01-31 23:00:08 +0000
committerMaho Nakata <maho@FreeBSD.org>2004-01-31 23:00:08 +0000
commitfc3ae3cdbe432fa36d0dc32fa7fea8da77fcbb3a (patch)
tree73324475893b375a34e97b37becdd00c07f36db8 /lang/ifc7
parenta5d81534e27eab4a521aea038a86d4746e8da41a (diff)
downloadports-fc3ae3cdbe432fa36d0dc32fa7fea8da77fcbb3a.tar.gz
ports-fc3ae3cdbe432fa36d0dc32fa7fea8da77fcbb3a.zip
Notes
Diffstat (limited to 'lang/ifc7')
-rw-r--r--lang/ifc7/files/linux_stat.c190
1 files changed, 190 insertions, 0 deletions
diff --git a/lang/ifc7/files/linux_stat.c b/lang/ifc7/files/linux_stat.c
new file mode 100644
index 000000000000..4723acaa5d5b
--- /dev/null
+++ b/lang/ifc7/files/linux_stat.c
@@ -0,0 +1,190 @@
+/*
+ * Copyright (c) 2002 The FreeBSD Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: /tmp/pcvs/ports/lang/ifc7/files/Attic/linux_stat.c,v 1.1 2004-01-31 23:00:08 maho Exp $
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+/* This matches struct stat64 in glibc2.1, hence the absolutely
+ * insane amounts of padding around dev_t's.
+ */
+struct stat64 {
+ unsigned short st_dev;
+ unsigned char __pad0[10];
+
+#define STAT64_HAS_BROKEN_ST_INO 1
+ unsigned long __st_ino;
+
+ unsigned int st_mode;
+ unsigned int st_nlink;
+
+ unsigned long st_uid;
+ unsigned long st_gid;
+
+ unsigned short st_rdev;
+ unsigned char __pad3[10];
+
+ long long st_size;
+ unsigned long st_blksize;
+
+ unsigned long st_blocks; /* Number 512-byte blocks allocated. */
+ unsigned long __pad4; /* future possible st_blocks high bits */
+
+ unsigned long st_atime_;
+ unsigned long __pad5;
+
+ unsigned long st_mtime_;
+ unsigned long __pad6;
+
+ unsigned long st_ctime_;
+ unsigned long __pad7; /* will be high 32 bits of ctime someday */
+
+ unsigned long long st_ino;
+};
+
+struct stat64 stat2stat64(struct stat sb) {
+ static struct stat64 sb64;
+
+ sb64.st_dev = sb.st_dev;
+ sb64.st_ino = sb.st_ino;
+ sb64.st_mode = sb.st_mode;
+ sb64.st_nlink = sb.st_nlink;
+ sb64.st_uid = sb.st_uid;
+ sb64.st_gid = sb.st_gid;
+ sb64.st_rdev = sb.st_rdev;
+ sb64.st_size = sb.st_size;
+ sb64.st_blksize = sb.st_blksize;
+ sb64.st_blocks = sb.st_blocks;
+ sb64.st_atime_ = sb.st_atime;
+ sb64.st_mtime_ = sb.st_mtime;
+ sb64.st_ctime_ = sb.st_ctime;
+
+ return sb64;
+}
+
+int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf) {
+ struct stat sb;
+ int result;
+
+ result = fstat (__fildes, &sb);
+ *__stat_buf = stat2stat64(sb);
+ return result;
+}
+
+int __lxstat64 (int __ver, __const char *__filename,
+ struct stat64 *__stat_buf) {
+ struct stat sb;
+ int result;
+
+ result = lstat (__filename, &sb);
+ *__stat_buf = stat2stat64(sb);
+ return result;
+}
+
+int __xstat64 (int __ver, __const char *__filename,
+ struct stat64 *__stat_buf) {
+ struct stat sb;
+ int result;
+
+ result = stat (__filename, &sb);
+ *__stat_buf = stat2stat64(sb);
+ return result;
+}
+
+
+struct l_stat
+{
+ unsigned long long st_dev;
+ unsigned short int __pad1;
+ unsigned long st_ino;
+ unsigned int st_mode;
+ unsigned int st_nlink;
+ unsigned int st_uid;
+ unsigned int st_gid;
+ unsigned long long st_rdev;
+ unsigned short int __pad2;
+ long int st_size;
+ long int st_blksize;
+ long int st_blocks;
+ long int st_atime_;
+ unsigned long int __unused1;
+ long int st_mtime_;
+ unsigned long int __unused2;
+ long int st_ctime_;
+ unsigned long int __unused3;
+ unsigned long int __unused4;
+ unsigned long int __unused5;
+};
+
+struct l_stat stat2l_stat(struct stat sb) {
+ static struct l_stat lsb;
+
+ lsb.st_dev = sb.st_dev ;
+ lsb.st_ino = sb.st_ino ;
+ lsb.st_mode = sb.st_mode ;
+ lsb.st_nlink = sb.st_nlink ;
+ lsb.st_uid = sb.st_uid ;
+ lsb.st_gid = sb.st_gid ;
+ lsb.st_rdev = sb.st_rdev ;
+ lsb.st_size = sb.st_size ;
+ lsb.st_blksize = sb.st_blksize;
+ lsb.st_blocks = sb.st_blocks ;
+ lsb.st_atime_ = sb.st_atime ;
+ lsb.st_mtime_ = sb.st_mtime ;
+ lsb.st_ctime_ = sb.st_ctime ;
+
+ return lsb;
+}
+
+int __fxstat (int __ver, int __fildes, struct l_stat *__stat_buf) {
+ struct stat sb;
+ int result;
+
+ result = fstat (__fildes, &sb);
+ *__stat_buf = stat2l_stat(sb);
+ return result;
+}
+
+int __lxstat (int __ver, __const char *__filename,
+ struct l_stat *__stat_buf) {
+ struct stat sb;
+ int result;
+
+ result = lstat (__filename, &sb);
+ *__stat_buf = stat2l_stat(sb);
+ return result;
+}
+
+int __xstat (int __ver, __const char *__filename,
+ struct l_stat *__stat_buf) {
+ struct stat sb;
+ int result;
+
+ result = stat (__filename, &sb);
+ *__stat_buf = stat2l_stat(sb);
+ return result;
+}