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]>

(backport <#3937>)
(cherry picked from commit 70de2da)
  • Loading branch information
epilys authored and tgross35 committed Oct 17, 2024
1 parent 31f746a commit 1b22329
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 @@ -205,6 +205,7 @@ fn test_apple(target: &str) {
"errno.h",
"execinfo.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"glob.h",
"grp.h",
Expand Down Expand Up @@ -482,6 +483,7 @@ fn test_openbsd(target: &str) {
"errno.h",
"execinfo.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"libgen.h",
"limits.h",
Expand Down Expand Up @@ -793,6 +795,7 @@ fn test_redox(target: &str) {
"dlfcn.h",
"errno.h",
"fcntl.h",
"fnmatch.h",
"grp.h",
"limits.h",
"locale.h",
Expand Down Expand Up @@ -852,6 +855,7 @@ fn test_solarish(target: &str) {
"errno.h",
"execinfo.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"glob.h",
"grp.h",
Expand Down Expand Up @@ -1092,6 +1096,7 @@ fn test_netbsd(target: &str) {
"elf.h",
"errno.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"libgen.h",
"limits.h",
Expand Down Expand Up @@ -1308,6 +1313,7 @@ fn test_dragonflybsd(target: &str) {
"errno.h",
"execinfo.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"glob.h",
"grp.h",
Expand Down Expand Up @@ -1531,6 +1537,7 @@ fn test_wasi(target: &str) {
"dirent.h",
"errno.h",
"fcntl.h",
"fnmatch.h",
"langinfo.h",
"limits.h",
"locale.h",
Expand Down Expand Up @@ -1646,6 +1653,7 @@ fn test_android(target: &str) {
"elf.h",
"errno.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"grp.h",
"ifaddrs.h",
Expand Down Expand Up @@ -2145,6 +2153,7 @@ fn test_freebsd(target: &str) {
"errno.h",
"execinfo.h",
"fcntl.h",
"fnmatch.h",
"getopt.h",
"glob.h",
"grp.h",
Expand Down Expand Up @@ -2762,6 +2771,7 @@ fn test_emscripten(target: &str) {
"dlfcn.h",
"errno.h",
"fcntl.h",
"fnmatch.h",
"glob.h",
"grp.h",
"ifaddrs.h",
Expand Down Expand Up @@ -3030,6 +3040,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 @@ -3427,6 +3438,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 @@ -525,6 +530,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 @@ -313,6 +313,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 @@ -1580,6 +1598,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 1b22329

Please sign in to comment.