xref: /freebsd/contrib/libarchive/libarchive/archive_platform_stat.h (revision 401026e4825a05abba6f945cf1b74b3328876fa2)
1 /*-
2  * SPDX-License-Identifier: BSD-2-Clause
3  *
4  * Copyright (c) 2025 Tobias Stoeckmann
5  * All rights reserved.
6  */
7 
8 /* !!ONLY FOR USE INTERNALLY TO LIBARCHIVE!! */
9 
10 #ifndef ARCHIVE_PLATFORM_STAT_H_INCLUDED
11 #define ARCHIVE_PLATFORM_STAT_H_INCLUDED
12 
13 #ifndef __LIBARCHIVE_BUILD
14 #error This header is only to be used internally to libarchive.
15 #endif
16 
17 #if defined(_WIN32) && !defined(__CYGWIN__)
18 /* We use _lseeki64() on Windows. */
19 typedef int64_t la_seek_t;
20 
21 struct la_seek_stat {
22 	int64_t		st_mtime;
23 	ino_t		st_ino;
24 	unsigned short	st_mode;
25 	uint32_t	st_nlink;
26 	gid_t		st_gid;
27 	la_seek_t	st_size;
28 	uid_t		st_uid;
29 	dev_t		st_dev;
30 	dev_t		st_rdev;
31 };
32 typedef struct la_seek_stat la_seek_stat_t;
33 
34 #define la_seek_fstat(fd, st)	__la_seek_fstat((fd), (st))
35 #define la_seek_stat(fd, st)	__la_seek_stat((fd), (st))
36 
37 #else
38 typedef off_t la_seek_t;
39 typedef struct stat la_seek_stat_t;
40 
41 #define la_seek_fstat(fd, st)	fstat((fd), (st))
42 #define la_seek_stat(fd, st)	stat((fd), (st))
43 #endif
44 
45 #endif	/* !ARCHIVE_PLATFORM_STAT_H_INCLUDED */
46