Strict conformance to IEEE Std 1003.1-2001
This commit is contained in:
		
							parent
							
								
									3a4f3862a7
								
							
						
					
					
						commit
						6e575b0f72
					
				| @ -16,9 +16,9 @@ | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
|  */ | ||||
| 
 | ||||
| #define _POSIX_C_SOURCE 200112L /* for setenv(3) */ | ||||
| #include <stdlib.h> | ||||
| #define _POSIX_C_SOURCE 200112L | ||||
| 
 | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <unistd.h> | ||||
| #include <sys/wait.h> | ||||
|  | ||||
							
								
								
									
										2
									
								
								image.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								image.c
									
									
									
									
									
								
							| @ -16,6 +16,8 @@ | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
|  */ | ||||
| 
 | ||||
| #define _POSIX_C_SOURCE 200112L | ||||
| 
 | ||||
| #include <string.h> | ||||
| #include <unistd.h> | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										9
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								main.c
									
									
									
									
									
								
							| @ -16,6 +16,8 @@ | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
|  */ | ||||
| 
 | ||||
| #define _POSIX_C_SOURCE 200112L | ||||
| 
 | ||||
| #include <stdlib.h> | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| @ -430,8 +432,9 @@ int fncmp(const void *a, const void *b) { | ||||
| } | ||||
| 
 | ||||
| int main(int argc, char **argv) { | ||||
| 	int i, len, start; | ||||
| 	int i, start; | ||||
| 	size_t n; | ||||
| 	ssize_t len; | ||||
| 	char *filename; | ||||
| 	struct stat fstats; | ||||
| 	r_dir_t dir; | ||||
| @ -460,11 +463,13 @@ int main(int argc, char **argv) { | ||||
| 	/* build file list: */ | ||||
| 	if (options->from_stdin) { | ||||
| 		filename = NULL; | ||||
| 		while ((len = getline(&filename, &n, stdin)) > 0) { | ||||
| 		while ((len = get_line(&filename, &n, stdin)) > 0) { | ||||
| 			if (filename[len-1] == '\n') | ||||
| 				filename[len-1] = '\0'; | ||||
| 			check_add_file(filename); | ||||
| 		} | ||||
| 		if (filename) | ||||
| 			free(filename); | ||||
| 	} else { | ||||
| 		for (i = 0; i < options->filecnt; i++) { | ||||
| 			filename = options->filenames[i]; | ||||
|  | ||||
| @ -16,12 +16,12 @@ | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
|  */ | ||||
| 
 | ||||
| #define _POSIX_C_SOURCE 2 /* for getopt(3) */ | ||||
| #include <unistd.h> | ||||
| #define _POSIX_C_SOURCE 200112L | ||||
| 
 | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <stdio.h> | ||||
| #include <unistd.h> | ||||
| 
 | ||||
| #include "options.h" | ||||
| #include "util.h" | ||||
|  | ||||
							
								
								
									
										28
									
								
								thumbs.c
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								thumbs.c
									
									
									
									
									
								
							| @ -16,12 +16,14 @@ | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
|  */ | ||||
| 
 | ||||
| #define _POSIX_C_SOURCE 200112L | ||||
| 
 | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <sys/time.h> | ||||
| #include <sys/types.h> | ||||
| #include <sys/stat.h> | ||||
| #include <unistd.h> | ||||
| #include <utime.h> | ||||
| 
 | ||||
| #include "thumbs.h" | ||||
| #include "util.h" | ||||
| @ -29,11 +31,6 @@ | ||||
| #define _THUMBS_CONFIG | ||||
| #include "config.h" | ||||
| 
 | ||||
| #ifdef __NetBSD__ | ||||
| #define st_mtim st_mtimespec | ||||
| #define st_atim st_atimespec | ||||
| #endif | ||||
| 
 | ||||
| #ifdef EXIF_SUPPORT | ||||
| void exif_auto_orientate(const fileinfo_t*); | ||||
| #endif | ||||
| @ -76,12 +73,8 @@ Imlib_Image* tns_cache_load(const char *filepath) { | ||||
| 		return NULL; | ||||
| 
 | ||||
| 	if ((cfile = tns_cache_filepath(filepath))) { | ||||
| 		if (!stat(cfile, &cstats) && | ||||
| 		    cstats.st_mtim.tv_sec == fstats.st_mtim.tv_sec && | ||||
| 		    cstats.st_mtim.tv_nsec / 1000 == fstats.st_mtim.tv_nsec / 1000) | ||||
| 		{ | ||||
| 		if (!stat(cfile, &cstats) && cstats.st_mtime == fstats.st_mtime) | ||||
| 			im = imlib_load_image(cfile); | ||||
| 		} | ||||
| 		free(cfile); | ||||
| 	} | ||||
| 
 | ||||
| @ -91,7 +84,7 @@ Imlib_Image* tns_cache_load(const char *filepath) { | ||||
| void tns_cache_write(thumb_t *t, Bool force) { | ||||
| 	char *cfile, *dirend; | ||||
| 	struct stat cstats, fstats; | ||||
| 	struct timeval times[2]; | ||||
| 	struct utimbuf times; | ||||
| 	Imlib_Load_Error err = 0; | ||||
| 
 | ||||
| 	if (!t || !t->im || !t->file || !t->file->name || !t->file->path) | ||||
| @ -101,10 +94,7 @@ void tns_cache_write(thumb_t *t, Bool force) { | ||||
| 		return; | ||||
| 
 | ||||
| 	if ((cfile = tns_cache_filepath(t->file->path))) { | ||||
| 		if (force || stat(cfile, &cstats) || | ||||
| 		    cstats.st_mtim.tv_sec != fstats.st_mtim.tv_sec || | ||||
| 		    cstats.st_mtim.tv_nsec / 1000 != fstats.st_mtim.tv_nsec / 1000) | ||||
| 		{ | ||||
| 		if (force || stat(cfile, &cstats) || cstats.st_mtime != fstats.st_mtime) { | ||||
| 			if ((dirend = strrchr(cfile, '/'))) { | ||||
| 				*dirend = '\0'; | ||||
| 				err = r_mkdir(cfile); | ||||
| @ -120,9 +110,9 @@ void tns_cache_write(thumb_t *t, Bool force) { | ||||
| 			if (err) { | ||||
| 				warn("could not cache thumbnail: %s", t->file->name); | ||||
| 			} else { | ||||
| 				TIMESPEC_TO_TIMEVAL(×[0], &fstats.st_atim); | ||||
| 				TIMESPEC_TO_TIMEVAL(×[1], &fstats.st_mtim); | ||||
| 				utimes(cfile, times); | ||||
| 				times.actime = fstats.st_atime; | ||||
| 				times.modtime = fstats.st_mtime; | ||||
| 				utime(cfile, ×); | ||||
| 			} | ||||
| 		} | ||||
| 		free(cfile); | ||||
|  | ||||
							
								
								
									
										44
									
								
								util.c
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								util.c
									
									
									
									
									
								
							| @ -16,6 +16,8 @@ | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
|  */ | ||||
| 
 | ||||
| #define _POSIX_C_SOURCE 200112L | ||||
| 
 | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <sys/types.h> | ||||
| @ -27,6 +29,7 @@ | ||||
| #include "util.h" | ||||
| 
 | ||||
| enum { | ||||
| 	BUF_SIZE  = 1024, | ||||
| 	DNAME_CNT = 512, | ||||
| 	FNAME_LEN = 1024 | ||||
| }; | ||||
| @ -87,6 +90,39 @@ void die(const char* fmt, ...) { | ||||
| 	exit(1); | ||||
| } | ||||
| 
 | ||||
| ssize_t get_line(char **buf, size_t *n, FILE *stream) { | ||||
| 	size_t len; | ||||
| 	char *s; | ||||
| 
 | ||||
| 	if (!stream || feof(stream) || ferror(stream)) | ||||
| 		return -1; | ||||
| 
 | ||||
| 	if (!*buf || !*n) { | ||||
| 		*n = BUF_SIZE; | ||||
| 		*buf = (char*) s_malloc(*n); | ||||
| 	} | ||||
| 	s = *buf; | ||||
| 
 | ||||
| 	while (1) { | ||||
| 		if (!fgets(s, *n - (s - *buf), stream)) | ||||
| 			return -1; | ||||
| 		len = strlen(s); | ||||
| 		if (feof(stream)) | ||||
| 			break; | ||||
| 		if (len > 0 && s[len-1] == '\n') | ||||
| 			break; | ||||
| 		if (len + 1 == *n - (s - *buf)) { | ||||
| 			*buf = (char*) s_realloc(*buf, 2 * *n); | ||||
| 			s = *buf + *n - 1; | ||||
| 			*n *= 2; | ||||
| 		} else { | ||||
| 			s += len; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	return s - *buf + len; | ||||
| } | ||||
| 
 | ||||
| void size_readable(float *size, const char **unit) { | ||||
| 	const char *units[] = { "", "K", "M", "G" }; | ||||
| 	int i; | ||||
| @ -98,13 +134,9 @@ void size_readable(float *size, const char **unit) { | ||||
| 
 | ||||
| char* absolute_path(const char *filename) { | ||||
| 	size_t len; | ||||
| 	char *path = NULL; | ||||
| 	const char *basename; | ||||
| 	char *dirname = NULL; | ||||
| 	char *cwd = NULL; | ||||
| 	char *twd = NULL; | ||||
| 	char *dir; | ||||
| 	char *s; | ||||
| 	char *dir, *dirname = NULL, *path = NULL, *s; | ||||
| 	char *cwd = NULL, *twd = NULL; | ||||
| 
 | ||||
| 	if (!filename || *filename == '\0' || *filename == '/') | ||||
| 		return NULL; | ||||
|  | ||||
							
								
								
									
										9
									
								
								util.h
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								util.h
									
									
									
									
									
								
							| @ -45,13 +45,6 @@ | ||||
|   (tv)->tv_usec += (t) % 1000 * 1000;   \ | ||||
| } | ||||
| 
 | ||||
| #ifndef TIMESPEC_TO_TIMEVAL | ||||
| #define TIMESPEC_TO_TIMEVAL(tv,ts) {    \ | ||||
|   (tv)->tv_sec = (ts)->tv_sec;          \ | ||||
|   (tv)->tv_usec = (ts)->tv_nsec / 1000; \ | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| typedef struct { | ||||
| 	DIR *dir; | ||||
| 	char *name; | ||||
| @ -69,6 +62,8 @@ char* s_strdup(char*); | ||||
| void warn(const char*, ...); | ||||
| void die(const char*, ...); | ||||
| 
 | ||||
| ssize_t get_line(char**, size_t*, FILE*); | ||||
| 
 | ||||
| void size_readable(float*, const char**); | ||||
| 
 | ||||
| char* absolute_path(const char*); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Bert
						Bert