From 28644c1bbb42a2c9635e6200b2735688d3d508b9 Mon Sep 17 00:00:00 2001 From: Pawel Jakub Dawidek Date: Fri, 7 Jan 2005 00:06:20 +0000 Subject: [PATCH] Introduce new field 'fts_bignum' which is 64bit long and will allow to make utilities like du(1) 64bit-clean. When this field is used, one cannot use 'fts_number' and 'fts_pointer' fields. This commit doesn't break API nor ABI. This work is part of the BigDisk project: http://www.FreeBSD.org/projects/bigdisk/ Discussed on: arch@ MFC after: 5 days --- include/fts.h | 12 ++++++++++-- lib/libc/gen/fts-compat.h | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/include/fts.h b/include/fts.h index 09c4600a1072..7eb03a649943 100644 --- a/include/fts.h +++ b/include/fts.h @@ -69,8 +69,16 @@ typedef struct _ftsent { struct _ftsent *fts_cycle; /* cycle node */ struct _ftsent *fts_parent; /* parent directory */ struct _ftsent *fts_link; /* next file in directory */ - long fts_number; /* local numeric value */ - void *fts_pointer; /* local address value */ + union { + struct { + long __fts_number; /* local numeric value */ + void *__fts_pointer; /* local address value */ + } __struct_ftsent; + int64_t __fts_bignum; + } __union_ftsent; +#define fts_number __union_ftsent.__struct_ftsent.__fts_number +#define fts_pointer __union_ftsent.__struct_ftsent.__fts_pointer +#define fts_bignum __union_ftsent.__fts_bignum char *fts_accpath; /* access path */ char *fts_path; /* root path */ int fts_errno; /* errno for this node */ diff --git a/lib/libc/gen/fts-compat.h b/lib/libc/gen/fts-compat.h index 09c4600a1072..7eb03a649943 100644 --- a/lib/libc/gen/fts-compat.h +++ b/lib/libc/gen/fts-compat.h @@ -69,8 +69,16 @@ typedef struct _ftsent { struct _ftsent *fts_cycle; /* cycle node */ struct _ftsent *fts_parent; /* parent directory */ struct _ftsent *fts_link; /* next file in directory */ - long fts_number; /* local numeric value */ - void *fts_pointer; /* local address value */ + union { + struct { + long __fts_number; /* local numeric value */ + void *__fts_pointer; /* local address value */ + } __struct_ftsent; + int64_t __fts_bignum; + } __union_ftsent; +#define fts_number __union_ftsent.__struct_ftsent.__fts_number +#define fts_pointer __union_ftsent.__struct_ftsent.__fts_pointer +#define fts_bignum __union_ftsent.__fts_bignum char *fts_accpath; /* access path */ char *fts_path; /* root path */ int fts_errno; /* errno for this node */