Lines Matching +full:0 +full:ms

81 #define	STDIN_FILENO	0
96 if (vasprintf(&tmppath, fmt, ap) < 0) { in _w32_append_path()
110 if (asprintf(&newpath, "%s%c%s", *hmagicpath, PATHSEP, tmppath) < 0) in _w32_append_path()
142 if (stricmp(exepath, dllpath) == 0) in _w32_get_magic_relative_to()
147 if (sp > 3 && stricmp(&dllpath[sp - 3], "bin") == 0) { in _w32_get_magic_relative_to()
153 for (sp = 0; sp < __arraycount(trypaths); sp++) in _w32_get_magic_relative_to()
191 if (asprintf(&hmagicpath, "%s/.magic.mgc", home) < 0) in get_default_magic()
195 if (asprintf(&hmagicpath, "%s/.magic", home) < 0) in get_default_magic()
201 if (asprintf(&hmagicpath, "%s/%s", home, hmagic) < 0) in get_default_magic()
208 if (asprintf(&default_magic, "%s:%s", hmagicpath, MAGIC) < 0) in get_default_magic()
273 unreadable_info(struct magic_set *ms, mode_t md, const char *file) in unreadable_info() argument
277 if (access(file, W_OK) == 0) in unreadable_info()
278 if (file_printf(ms, "writable, ") == -1) in unreadable_info()
281 if (access(file, X_OK) == 0) in unreadable_info()
282 if (file_printf(ms, "executable, ") == -1) in unreadable_info()
285 /* X_OK doesn't work well on MS-Windows */ in unreadable_info()
292 if (file_printf(ms, "writable, ") == -1) in unreadable_info()
298 if (file_printf(ms, "regular file, ") == -1) in unreadable_info()
300 if (file_printf(ms, "no read permission") == -1) in unreadable_info()
302 return 0; in unreadable_info()
306 magic_close(struct magic_set *ms) in magic_close() argument
308 if (ms == NULL) in magic_close()
310 file_ms_free(ms); in magic_close()
317 magic_load(struct magic_set *ms, const char *magicfile) in magic_load() argument
319 if (ms == NULL) in magic_load()
321 return file_apprentice(ms, magicfile, FILE_LOAD); in magic_load()
329 magic_load_buffers(struct magic_set *ms, void **bufs, size_t *sizes, in magic_load_buffers() argument
332 if (ms == NULL) in magic_load_buffers()
334 return buffer_apprentice(ms, RCAST(struct magic **, bufs), in magic_load_buffers()
340 magic_compile(struct magic_set *ms, const char *magicfile) in magic_compile() argument
342 if (ms == NULL) in magic_compile()
344 return file_apprentice(ms, magicfile, FILE_COMPILE); in magic_compile()
348 magic_check(struct magic_set *ms, const char *magicfile) in magic_check() argument
350 if (ms == NULL) in magic_check()
352 return file_apprentice(ms, magicfile, FILE_CHECK); in magic_check()
356 magic_list(struct magic_set *ms, const char *magicfile) in magic_list() argument
358 if (ms == NULL) in magic_list()
360 return file_apprentice(ms, magicfile, FILE_LIST); in magic_list()
364 close_and_restore(const struct magic_set *ms, const char *name, int fd, in close_and_restore() argument
371 if ((ms->flags & MAGIC_PRESERVE_ATIME) != 0) { in close_and_restore()
380 (void)memset(utsbuf, 0, sizeof(utsbuf)); in close_and_restore()
381 utsbuf[0].tv_sec = sb->st_atime; in close_and_restore()
388 (void)memset(&utbuf, 0, sizeof(utbuf)); in close_and_restore()
402 magic_descriptor(struct magic_set *ms, int fd) in magic_descriptor() argument
404 if (ms == NULL) in magic_descriptor()
406 return file_or_fd(ms, NULL, fd); in magic_descriptor()
413 magic_file(struct magic_set *ms, const char *inname) in magic_file() argument
415 if (ms == NULL) in magic_file()
417 return file_or_fd(ms, inname, STDIN_FILENO); in magic_file()
421 file_or_fd(struct magic_set *ms, const char *inname, int fd) in file_or_fd() argument
426 ssize_t nbytes = 0; /* number of bytes read from a datafile */ in file_or_fd()
427 int ispipe = 0; in file_or_fd()
428 int okstat = 0; in file_or_fd()
431 if (file_reset(ms, 1) == -1) in file_or_fd()
435 * one extra for terminating '\0', and in file_or_fd()
439 if ((buf = CAST(unsigned char *, malloc(ms->bytes_max + SLOP))) == NULL) in file_or_fd()
442 switch (file_fsmagic(ms, inname, &sb)) { in file_or_fd()
445 case 0: /* nothing found */ in file_or_fd()
448 rv = 0; in file_or_fd()
459 errno = 0; in file_or_fd()
460 if ((fd = open(inname, flags)) < 0) { in file_or_fd()
461 okstat = stat(inname, &sb) == 0; in file_or_fd()
475 unreadable_info(ms, sb.st_mode, inname) == -1) in file_or_fd()
477 rv = 0; in file_or_fd()
480 #if O_CLOEXEC == 0 && defined(F_SETFD) in file_or_fd()
486 okstat = fstat(fd, &sb) == 0; in file_or_fd()
490 pos = lseek(fd, CAST(off_t, 0), SEEK_CUR); in file_or_fd()
494 * try looking at the first ms->bytes_max bytes in file_or_fd()
498 ssize_t r = 0; in file_or_fd()
501 CAST(size_t, ms->bytes_max - nbytes), 1)) > 0) { in file_or_fd()
507 if (nbytes == 0 && inname) { in file_or_fd()
509 if (unreadable_info(ms, sb.st_mode, inname) == -1) in file_or_fd()
511 rv = 0; in file_or_fd()
521 ms->bytes_max; in file_or_fd()
524 file_error(ms, errno, "cannot read fd %d", fd); in file_or_fd()
526 file_error(ms, errno, "cannot read `%s'", in file_or_fd()
532 (void)memset(buf + nbytes, 0, SLOP); /* NUL terminate */ in file_or_fd()
533 if (file_buffer(ms, fd, okstat ? &sb : NULL, inname, buf, CAST(size_t, nbytes)) == -1) in file_or_fd()
535 rv = 0; in file_or_fd()
541 close_and_restore(ms, inname, fd, &sb); in file_or_fd()
544 return rv == 0 ? file_getbuffer(ms) : NULL; in file_or_fd()
549 magic_buffer(struct magic_set *ms, const void *buf, size_t nb) in magic_buffer() argument
551 if (ms == NULL) in magic_buffer()
553 if (file_reset(ms, 1) == -1) in magic_buffer()
559 if (file_buffer(ms, -1, NULL, NULL, buf, nb) == -1) { in magic_buffer()
562 return file_getbuffer(ms); in magic_buffer()
567 magic_error(struct magic_set *ms) in magic_error() argument
569 if (ms == NULL) in magic_error()
571 return (ms->event_flags & EVENT_HAD_ERR) ? ms->o.buf : NULL; in magic_error()
575 magic_errno(struct magic_set *ms) in magic_errno() argument
577 if (ms == NULL) in magic_errno()
579 return (ms->event_flags & EVENT_HAD_ERR) ? ms->error : 0; in magic_errno()
583 magic_getflags(struct magic_set *ms) in magic_getflags() argument
585 if (ms == NULL) in magic_getflags()
588 return ms->flags; in magic_getflags()
592 magic_setflags(struct magic_set *ms, int flags) in magic_setflags() argument
594 if (ms == NULL) in magic_setflags()
600 ms->flags = flags; in magic_setflags()
601 return 0; in magic_setflags()
611 magic_setparam(struct magic_set *ms, int param, const void *val) in magic_setparam() argument
613 if (ms == NULL) in magic_setparam()
618 ms->indir_max = CAST(uint16_t, v); in magic_setparam()
619 return 0; in magic_setparam()
621 ms->name_max = CAST(uint16_t, v); in magic_setparam()
622 return 0; in magic_setparam()
624 ms->elf_phnum_max = CAST(uint16_t, v); in magic_setparam()
625 return 0; in magic_setparam()
627 ms->elf_shnum_max = CAST(uint16_t, v); in magic_setparam()
628 return 0; in magic_setparam()
630 ms->elf_shsize_max = v; in magic_setparam()
631 return 0; in magic_setparam()
633 ms->elf_notes_max = CAST(uint16_t, v); in magic_setparam()
634 return 0; in magic_setparam()
636 ms->regex_max = CAST(uint16_t, v); in magic_setparam()
637 return 0; in magic_setparam()
639 ms->bytes_max = v; in magic_setparam()
640 return 0; in magic_setparam()
642 ms->encoding_max = v; in magic_setparam()
643 return 0; in magic_setparam()
645 ms->magwarn_max = v; in magic_setparam()
646 return 0; in magic_setparam()
654 magic_getparam(struct magic_set *ms, int param, void *val) in magic_getparam() argument
656 if (ms == NULL) in magic_getparam()
660 *CAST(size_t *, val) = ms->indir_max; in magic_getparam()
661 return 0; in magic_getparam()
663 *CAST(size_t *, val) = ms->name_max; in magic_getparam()
664 return 0; in magic_getparam()
666 *CAST(size_t *, val) = ms->elf_phnum_max; in magic_getparam()
667 return 0; in magic_getparam()
669 *CAST(size_t *, val) = ms->elf_shnum_max; in magic_getparam()
670 return 0; in magic_getparam()
672 *CAST(size_t *, val) = ms->elf_shsize_max; in magic_getparam()
673 return 0; in magic_getparam()
675 *CAST(size_t *, val) = ms->elf_notes_max; in magic_getparam()
676 return 0; in magic_getparam()
678 *CAST(size_t *, val) = ms->regex_max; in magic_getparam()
679 return 0; in magic_getparam()
681 *CAST(size_t *, val) = ms->bytes_max; in magic_getparam()
682 return 0; in magic_getparam()
684 *CAST(size_t *, val) = ms->encoding_max; in magic_getparam()
685 return 0; in magic_getparam()
687 *CAST(size_t *, val) = ms->magwarn_max; in magic_getparam()
688 return 0; in magic_getparam()