From: Youngjae Cho Date: Mon, 20 Dec 2021 07:46:29 +0000 (+0900) Subject: file: add libsys_parse_cmdline_scanf() X-Git-Tag: accepted/tizen/unified/20220117.135033~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F14%2F268314%2F3;p=platform%2Fcore%2Fsystem%2Flibsyscommon.git file: add libsys_parse_cmdline_scanf() libsys_parse_cmdline_scanf() scans tokens of file /proc/cmdline. The parameters and return value have same semantics to those of scanf() family. Change-Id: Iac5838fe36b0ed2de36eb0412a13691ba0a50c3b Signed-off-by: Youngjae Cho --- diff --git a/src/libcommon/file.c b/src/libcommon/file.c index b3ca5f1..2b0c6ba 100644 --- a/src/libcommon/file.c +++ b/src/libcommon/file.c @@ -131,3 +131,30 @@ int sys_set_str(char *fname, char *val) return 0; } + +int libsys_parse_cmdline_scanf(const char *format, ...) +{ + FILE *fp = NULL; + char *token = NULL; + size_t len = 0; + va_list ap; + int ret = 0; + + fp = fopen("/proc/cmdline", "r"); + if (!fp) + return 0; + + va_start(ap, format); + + while (getdelim(&token, &len, ' ', fp) != EOF) { + ret = vsscanf(token, format, ap); + if (ret > 0) + break; + } + + free(token); + va_end(ap); + fclose(fp); + + return ret; +} diff --git a/src/libcommon/file.h b/src/libcommon/file.h index 1250da8..31df8fa 100644 --- a/src/libcommon/file.h +++ b/src/libcommon/file.h @@ -18,11 +18,14 @@ #ifndef __LIBCOMMON_FILE_H__ #define __LIBCOMMON_FILE_H__ +#include + int sys_read_buf(char *file, char *buf, int len); int sys_write_buf(char *file, char *buf); int sys_get_int(char *fname, int *val); int sys_get_str(char *fname, char *str, int len); int sys_set_int(char *fname, int val); int sys_set_str(char *fname, char *val); +int libsys_parse_cmdline_scanf(const char *format, ...); #endif /* __LIBCOMMON_FILE_H__ */