Lines Matching +full:everything +full:- +full:else

12  *  AutoOpts is Copyright (C) 1992-2018 by Bruce Korb - all rights reserved
44 # else
47 # else
56 * as everybody knows, if open(2) fails, it returns -1, so that must
59 #define AO_INVALID_FD -1
79 * @param mapinfo a structure holding everything we need to know
88 mapinfo->txt_data = AGALOC(mapinfo->txt_size+1, "file text"); in load_text_file()
89 if (mapinfo->txt_data == NULL) { in load_text_file()
90 mapinfo->txt_errno = ENOMEM; in load_text_file()
95 size_t sz = mapinfo->txt_size; in load_text_file()
96 char * pz = mapinfo->txt_data; in load_text_file()
99 ssize_t rdct = read(mapinfo->txt_fd, pz, sz); in load_text_file()
101 mapinfo->txt_errno = errno; in load_text_file()
103 free(mapinfo->txt_data); in load_text_file()
108 sz -= rdct; in load_text_file()
114 mapinfo->txt_errno = 0; in load_text_file()
116 #else /* HAVE mmap */ in load_text_file()
122 mapinfo->txt_full_size = (mapinfo->txt_size + pgsz) & ~(pgsz - 1); in load_text_file()
123 if (mapinfo->txt_full_size == (mapinfo->txt_size + pgsz)) { in load_text_file()
129 map_addr = mmap(NULL, mapinfo->txt_full_size, PROT_READ|PROT_WRITE, in load_text_file()
131 #else in load_text_file()
132 mapinfo->txt_zero_fd = open("/dev/zero", O_RDONLY); in load_text_file()
134 if (mapinfo->txt_zero_fd == AO_INVALID_FD) { in load_text_file()
135 mapinfo->txt_errno = errno; in load_text_file()
138 map_addr = mmap(NULL, mapinfo->txt_full_size, PROT_READ|PROT_WRITE, in load_text_file()
139 MAP_PRIVATE, mapinfo->txt_zero_fd, 0); in load_text_file()
142 mapinfo->txt_errno = errno; in load_text_file()
145 mapinfo->txt_flags |= MAP_FIXED; in load_text_file()
148 mapinfo->txt_data = in load_text_file()
149 mmap(map_addr, mapinfo->txt_size, mapinfo->txt_prot, in load_text_file()
150 mapinfo->txt_flags, mapinfo->txt_fd, 0); in load_text_file()
152 if (mapinfo->txt_data == MAP_FAILED_PTR) in load_text_file()
153 mapinfo->txt_errno = errno; in load_text_file()
164 * @param mapinfo a structure holding everything we need to know
172 mapinfo->txt_zero_fd = AO_INVALID_FD; in validate_mmap()
174 mapinfo->txt_fd = AO_INVALID_FD; in validate_mmap()
175 mapinfo->txt_prot = prot; in validate_mmap()
176 mapinfo->txt_flags = flags; in validate_mmap()
184 * and if we share the data and we are *not* copy-on-writing the data, in validate_mmap()
196 * then don't let anyone else have access to the file. in validate_mmap()
201 mapinfo->txt_fd = open(fname, o_flag); in validate_mmap()
202 if (mapinfo->txt_fd < 0) { in validate_mmap()
203 mapinfo->txt_errno = errno; in validate_mmap()
204 mapinfo->txt_fd = AO_INVALID_FD; in validate_mmap()
214 if (fstat(mapinfo->txt_fd, &sb) != 0) { in validate_mmap()
215 mapinfo->txt_errno = errno; in validate_mmap()
216 close(mapinfo->txt_fd); in validate_mmap()
221 mapinfo->txt_errno = errno = EINVAL; in validate_mmap()
222 close(mapinfo->txt_fd); in validate_mmap()
226 mapinfo->txt_size = (size_t)sb.st_size; in validate_mmap()
229 if (mapinfo->txt_fd == AO_INVALID_FD) in validate_mmap()
230 mapinfo->txt_errno = errno; in validate_mmap()
236 * @param mi a structure holding everything we need to know about the map.
241 if (mi->txt_fd == AO_INVALID_FD) in close_mmap_files()
244 close(mi->txt_fd); in close_mmap_files()
245 mi->txt_fd = AO_INVALID_FD; in close_mmap_files()
248 if (mi->txt_zero_fd == AO_INVALID_FD) in close_mmap_files()
251 close(mi->txt_zero_fd); in close_mmap_files()
252 mi->txt_zero_fd = AO_INVALID_FD; in close_mmap_files()
266 * ret-type: void *
267 * ret-desc: The mmaped data address
313 if (mi->txt_errno != 0) in text_mmap()
318 if (mi->txt_errno == 0) in text_mmap()
319 return mi->txt_data; in text_mmap()
323 errno = mi->txt_errno; in text_mmap()
324 mi->txt_data = MAP_FAILED_PTR; in text_mmap()
325 return mi->txt_data; in text_mmap()
336 * ret-type: int
337 * ret-desc: -1 or 0. @code{errno} will have the error code.
354 (void)munmap(mi->txt_data, mi->txt_full_size); in text_munmap()
356 #else // don't HAVE_MMAP in text_munmap()
358 * IF the memory is writable *AND* it is not private (copy-on-write) in text_munmap()
362 if ( FILE_WRITABLE(mi->txt_prot, mi->txt_flags) in text_munmap()
363 && (lseek(mi->txt_fd, 0, SEEK_SET) >= 0) ) in text_munmap()
364 write(mi->txt_fd, mi->txt_data, mi->txt_size); in text_munmap()
366 free(mi->txt_data); in text_munmap()
369 mi->txt_errno = errno; in text_munmap()
372 return mi->txt_errno; in text_munmap()
379 * c-file-style: "stroustrup"
380 * indent-tabs-mode: nil