From 0183ae4083b22ca9cfa47582a13633bc95fb66f8 Mon Sep 17 00:00:00 2001 From: rain Date: Mon, 29 Aug 2022 11:54:35 +0000 Subject: [PATCH 1/2] add C. Signed-off-by: rain --- ...27\240\346\225\214\347\232\204 gnu \346\211\251\345\261\225.c" | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "C/\346\227\240\346\225\214\347\232\204 gnu \346\211\251\345\261\225.c" diff --git "a/C/\346\227\240\346\225\214\347\232\204 gnu \346\211\251\345\261\225.c" "b/C/\346\227\240\346\225\214\347\232\204 gnu \346\211\251\345\261\225.c" new file mode 100644 index 0000000..e69de29 -- Gitee From f572ba28a2ea559cb8dfbe52bb87d47043128839 Mon Sep 17 00:00:00 2001 From: rain Date: Mon, 29 Aug 2022 11:56:55 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E8=BF=B7=E6=83=91=E3=81=AEgnu=20=E6=89=A9?= =?UTF-8?q?=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: rain --- ...\347\232\204 gnu \346\211\251\345\261\225.c" | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git "a/C/\346\227\240\346\225\214\347\232\204 gnu \346\211\251\345\261\225.c" "b/C/\346\227\240\346\225\214\347\232\204 gnu \346\211\251\345\261\225.c" index e69de29..7434de7 100644 --- "a/C/\346\227\240\346\225\214\347\232\204 gnu \346\211\251\345\261\225.c" +++ "b/C/\346\227\240\346\225\214\347\232\204 gnu \346\211\251\345\261\225.c" @@ -0,0 +1,17 @@ +这串代码用来获取用户的家,如果实在获取不到就用 `/etc`。 +获取方式是: ++ $HOME 环境变量 ++ `/etc/passwd` 中的项 ++ `/home/$username` + +但是由于用了无敌的 GNU C 扩展,所以导致代码可能不那么…… + +```c +char *get_default_watch_on(void) +{ + return getenv("HOME") ? : + ({ struct passwd *p; (p = getpwuid(getuid())) ? p->pw_dir : + (({ char p[5 + _POSIX_LOGIN_NAME_MAX]; sprintf(p, "/home/%s", getlogin()); strdup(p); }) ? : + (char *) (fprintf(stderr, "Warning: using /etc as watch-on directory"), "/etc") );}); +} +``` \ No newline at end of file -- Gitee