Skip to content

Commit

Permalink
Add fnmatch.h
Browse files Browse the repository at this point in the history
Add fnmatch() function and FNM_* constants.

Documentation:

Header file:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fnmatch.h.html

fnmatch() function:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/fnmatch.html

Signed-off-by: Manos Pitsidianakis <[email protected]>
  • Loading branch information
epilys committed Sep 25, 2024
1 parent c31dfc1 commit 70de2da
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 0 deletions.
12 changes: 12 additions & 0 deletions libc-test/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ fn test_apple(target: &str) {
"errno.h",
"execinfo.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"glob.h",
"grp.h",
Expand Down Expand Up @@ -454,6 +455,7 @@ fn test_openbsd(target: &str) {
"errno.h",
"execinfo.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"libgen.h",
"limits.h",
Expand Down Expand Up @@ -731,6 +733,7 @@ fn test_redox(target: &str) {
"dlfcn.h",
"errno.h",
"fcntl.h",
"fnmatch.h",
"grp.h",
"limits.h",
"locale.h",
Expand Down Expand Up @@ -790,6 +793,7 @@ fn test_solarish(target: &str) {
"errno.h",
"execinfo.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"glob.h",
"grp.h",
Expand Down Expand Up @@ -1030,6 +1034,7 @@ fn test_netbsd(target: &str) {
"elf.h",
"errno.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"libgen.h",
"limits.h",
Expand Down Expand Up @@ -1244,6 +1249,7 @@ fn test_dragonflybsd(target: &str) {
"errno.h",
"execinfo.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"glob.h",
"grp.h",
Expand Down Expand Up @@ -1464,6 +1470,7 @@ fn test_wasi(target: &str) {
"dirent.h",
"errno.h",
"fcntl.h",
"fnmatch.h",
"langinfo.h",
"limits.h",
"locale.h",
Expand Down Expand Up @@ -1579,6 +1586,7 @@ fn test_android(target: &str) {
"elf.h",
"errno.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"grp.h",
"ifaddrs.h",
Expand Down Expand Up @@ -2087,6 +2095,7 @@ fn test_freebsd(target: &str) {
"errno.h",
"execinfo.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"glob.h",
"grp.h",
Expand Down Expand Up @@ -2706,6 +2715,7 @@ fn test_emscripten(target: &str) {
"dlfcn.h",
"errno.h",
"fcntl.h",
"fnmatch.h",
"glob.h",
"grp.h",
"ifaddrs.h",
Expand Down Expand Up @@ -2974,6 +2984,7 @@ fn test_neutrino(target: &str) {
"dlfcn.h",
"sys/elf.h",
"fcntl.h",
"fnmatch.h",
"glob.h",
"grp.h",
"iconv.h",
Expand Down Expand Up @@ -3368,6 +3379,7 @@ fn test_linux(target: &str) {
"dlfcn.h",
"elf.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"glob.h",
[gnu]: "gnu/libc-version.h",
Expand Down
6 changes: 6 additions & 0 deletions libc-test/semver/unix.txt
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,11 @@ FD_ZERO
FILE
FIOCLEX
FIONBIO
FNM_CASEFOLD
FNM_NOESCAPE
FNM_NOMATCH
FNM_PATHNAME
FNM_PERIOD
F_DUPFD
F_DUPFD_CLOEXEC
F_GETFD
Expand Down Expand Up @@ -526,6 +531,7 @@ fgetpos
fgets
fileno
flock
fnmatch
fopen
fork
fpathconf
Expand Down
22 changes: 22 additions & 0 deletions src/unix/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,24 @@ pub const ATF_PERM: ::c_int = 0x04;
pub const ATF_PUBL: ::c_int = 0x08;
pub const ATF_USETRAILERS: ::c_int = 0x10;

pub const FNM_PERIOD: c_int = 1 << 2;
pub const FNM_CASEFOLD: c_int = 1 << 4;
pub const FNM_NOMATCH: c_int = 1;

cfg_if! {
if #[cfg(any(
target_os = "macos",
target_os = "freebsd",
target_os = "android",
))] {
pub const FNM_PATHNAME: c_int = 1 << 1;
pub const FNM_NOESCAPE: c_int = 1 << 0;
} else {
pub const FNM_PATHNAME: c_int = 1 << 0;
pub const FNM_NOESCAPE: c_int = 1 << 1;
}
}

extern "C" {
pub static in6addr_loopback: in6_addr;
pub static in6addr_any: in6_addr;
Expand Down Expand Up @@ -1573,6 +1591,10 @@ cfg_if! {
}
}

extern "C" {
pub fn fnmatch(pattern: *const c_char, name: *const c_char, flags: c_int) -> c_int;
}

cfg_if! {
if #[cfg(target_env = "newlib")] {
mod newlib;
Expand Down

0 comments on commit 70de2da

Please sign in to comment.