diff options
| author | David M. Syzdek <david@syzdek.net> | 2022-03-17 22:56:32 -0800 |
|---|---|---|
| committer | David M. Syzdek <david@syzdek.net> | 2022-03-17 23:00:50 -0800 |
| commit | e34592fe87781feb50aa75009b6f98d90606fdcd (patch) | |
| tree | c7c7e03eda1e50043fd181ed7bfac0bfaf574cb8 /lib | |
| parent | 812323c166cd3d696087752691729addebc2b1f4 (diff) | |
| download | tinyrad-e34592fe87781feb50aa75009b6f98d90606fdcd.tar.gz tinyrad-e34592fe87781feb50aa75009b6f98d90606fdcd.tar.bz2 tinyrad-e34592fe87781feb50aa75009b6f98d90606fdcd.tar.xz tinyrad-e34592fe87781feb50aa75009b6f98d90606fdcd.zip | |
libtinyrad: adding tinyrad_filetostr()
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/libtinyrad/lfile.c | 36 | ||||
| -rw-r--r-- | lib/libtinyrad/lfile.h | 7 |
2 files changed, 43 insertions, 0 deletions
diff --git a/lib/libtinyrad/lfile.c b/lib/libtinyrad/lfile.c index 400fa81..eb2bb57 100644 --- a/lib/libtinyrad/lfile.c +++ b/lib/libtinyrad/lfile.c | |||
| @@ -235,6 +235,42 @@ int tinyrad_file_init( | |||
| 235 | 235 | ||
| 236 | 236 | ||
| 237 | int | 237 | int |
| 238 | tinyrad_filetostr( | ||
| 239 | char * dst, | ||
| 240 | const char * filename, | ||
| 241 | size_t size ) | ||
| 242 | { | ||
| 243 | int rc; | ||
| 244 | int fd; | ||
| 245 | struct stat sb; | ||
| 246 | size_t len; | ||
| 247 | ssize_t rlen; | ||
| 248 | |||
| 249 | assert(dst != NULL); | ||
| 250 | assert(size > 1); | ||
| 251 | |||
| 252 | if ((rc = tinyrad_stat(filename, &sb, S_IFREG)) != TRAD_SUCCESS) | ||
| 253 | return((int)rc); | ||
| 254 | |||
| 255 | len = (size > (size_t)(sb.st_size+1)) ? sb.st_size : (size - 1); | ||
| 256 | |||
| 257 | if ((fd = open(filename, O_RDONLY)) == -1) | ||
| 258 | return(TRAD_EACCES); | ||
| 259 | |||
| 260 | if ((rlen = read(fd, dst, len)) == -1) | ||
| 261 | { | ||
| 262 | close(fd); | ||
| 263 | return(TRAD_EUNKNOWN); | ||
| 264 | }; | ||
| 265 | dst[rlen] = '\0'; | ||
| 266 | |||
| 267 | close(fd); | ||
| 268 | |||
| 269 | return(TRAD_SUCCESS); | ||
| 270 | } | ||
| 271 | |||
| 272 | |||
| 273 | int | ||
| 238 | tinyrad_readline( | 274 | tinyrad_readline( |
| 239 | int fd, | 275 | int fd, |
| 240 | char * str, | 276 | char * str, |
diff --git a/lib/libtinyrad/lfile.h b/lib/libtinyrad/lfile.h index f6971e1..abd1f92 100644 --- a/lib/libtinyrad/lfile.h +++ b/lib/libtinyrad/lfile.h | |||
| @@ -103,6 +103,13 @@ tinyrad_file_init( | |||
| 103 | 103 | ||
| 104 | 104 | ||
| 105 | int | 105 | int |
| 106 | tinyrad_filetostr( | ||
| 107 | char * dst, | ||
| 108 | const char * filename, | ||
| 109 | size_t size ); | ||
| 110 | |||
| 111 | |||
| 112 | int | ||
| 106 | tinyrad_stat( | 113 | tinyrad_stat( |
| 107 | const char * path, | 114 | const char * path, |
| 108 | struct stat * sbpi, | 115 | struct stat * sbpi, |
