/* Yash: yet another shell */ /* path.h: filename-related utilities */ /* (C) 2007-2011 magicant */ /* This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef YASH_PATH_H #define YASH_PATH_H #include #include struct stat; extern _Bool is_file(const char *path) __attribute__((nonnull)); extern _Bool is_regular_file(const char *path) __attribute__((nonnull)); extern _Bool is_irregular_file(const char *path) __attribute__((nonnull)); extern _Bool is_readable(const char *path) __attribute__((nonnull)); extern _Bool is_writable(const char *path) __attribute__((nonnull)); extern _Bool is_executable(const char *path) __attribute__((nonnull)); extern _Bool is_readable_regular(const char *path) __attribute__((nonnull)); extern _Bool is_executable_regular(const char *path) __attribute__((nonnull)); extern _Bool is_directory(const char *path) __attribute__((nonnull)); extern _Bool stat_result_same_file( const struct stat *stat1, const struct stat *stat2) __attribute__((nonnull,pure)); extern _Bool is_same_file(const char *path1, const char *path2) __attribute__((nonnull)); extern wchar_t *canonicalize_path(const wchar_t *path) __attribute__((nonnull,malloc,warn_unused_result)); extern _Bool is_normalized_path(const wchar_t *path) __attribute__((nonnull)); extern char *xgetcwd(void) __attribute__((malloc,warn_unused_result)); extern char *which( const char *restrict name, char *const *restrict dirs, _Bool cond(const char *path)) __attribute__((nonnull(1),malloc,warn_unused_result)); extern int create_temporary_file(char **filename, mode_t mode) __attribute__((nonnull)); /********** Command Hashtable **********/ extern void init_cmdhash(void); extern void clear_cmdhash(void); extern const char *get_command_path(const char *name, _Bool forcelookup) __attribute__((nonnull)); extern void fill_cmdhash(const char *prefix, _Bool ignorecase); extern const char *get_command_path_default(const char *name) __attribute__((nonnull)); /********** Home Directory Cache **********/ extern void init_homedirhash(void); extern const wchar_t *get_home_directory( const wchar_t *username, _Bool forcelookup) __attribute__((nonnull)); /********** wglob **********/ enum wglobflags_T { WGLB_MARK = 1 << 0, WGLB_CASEFOLD = 1 << 1, WGLB_PERIOD = 1 << 2, WGLB_NOSORT = 1 << 3, WGLB_RECDIR = 1 << 4, }; struct plist_T; extern _Bool wglob(const wchar_t *restrict pattern, enum wglobflags_T flags, struct plist_T *restrict list) __attribute__((nonnull)); /********** Built-ins **********/ extern int cd_builtin(int argc, void **argv) __attribute__((nonnull)); extern int pwd_builtin(int argc, void **argv) __attribute__((nonnull)); extern int hash_builtin(int argc, void **argv) __attribute__((nonnull)); extern int umask_builtin(int argc, void **argv) __attribute__((nonnull)); extern const char *cd_help[], *pwd_help[], *hash_help[], *umask_help[]; extern int change_directory( const wchar_t *newpwd, _Bool printnewdir, _Bool logical) __attribute__((nonnull,warn_unused_result)); #endif /* YASH_PATH_H */ /* vim: set ts=8 sts=4 sw=4 noet tw=80: */