Lines Matching refs:lp

72 fmd_log_set_errno(fmd_log_t *lp, int err)  in fmd_log_set_errno()  argument
75 lp->log_errno = EFDL_EXACCT + ea_error(); in fmd_log_set_errno()
77 lp->log_errno = EFDL_BADTAG; in fmd_log_set_errno()
79 lp->log_errno = err; in fmd_log_set_errno()
81 errno = lp->log_errno; in fmd_log_set_errno()
87 fmd_log_dprintf(fmd_log_t *lp, const char *format, ...) in fmd_log_dprintf() argument
91 if (lp->log_flags & FMD_LF_DEBUG) { in fmd_log_dprintf()
105 fmd_log_load_record(fmd_log_t *lp, uint_t iflags, fmd_log_record_t *rp) in fmd_log_load_record() argument
112 ea_clear(&lp->log_ea); in fmd_log_load_record()
113 off = lseek64(lp->log_fd, 0, SEEK_CUR); in fmd_log_load_record()
116 if ((grp = ea_get_object_tree(&lp->log_ea, 1)) == NULL) in fmd_log_load_record()
117 return (fmd_log_set_errno(lp, EFDL_EXACCT)); in fmd_log_load_record()
121 fmd_log_dprintf(lp, "bad catalog tag 0x%x\n", grp->eo_catalog); in fmd_log_load_record()
123 return (fmd_log_set_errno(lp, EFDL_EXACCT)); in fmd_log_load_record()
138 return (fmd_log_set_errno(lp, err)); in fmd_log_load_record()
159 return (fmd_log_set_errno(lp, EFDL_NOCLASS)); in fmd_log_load_record()
162 if (rp->rec_nrefs != 0 && fmd_log_load_xrefs(lp, iflags, rp) != 0) { in fmd_log_load_record()
165 return (fmd_log_set_errno(lp, err)); in fmd_log_load_record()
196 fmd_log_load_xref(fmd_log_t *lp, uint_t iflags, in fmd_log_load_xref() argument
231 return (fmd_log_set_errno(lp, EFDL_BADREF)); in fmd_log_load_xref()
234 return (fmd_log_set_errno(lp, EFDL_BADDEV)); in fmd_log_load_xref()
243 for (xlp = lp->log_xrefs; xlp != NULL; xlp = xlp->log_xnext) { in fmd_log_load_xref()
255 fmd_log_dprintf(lp, "broken xref dev=%lx ino=%llx\n", in fmd_log_load_xref()
258 fmd_log_dprintf(lp, "broken xref uuid=%s\n", uuid); in fmd_log_load_xref()
280 fmd_log_load_xrdir(fmd_log_t *lp) in fmd_log_load_xrdir() argument
288 lp->log_flags |= FMD_LF_XREFS; in fmd_log_load_xrdir()
289 (void) strlcpy(dirbuf, lp->log_path, sizeof (dirbuf)); in fmd_log_load_xrdir()
302 if (strcmp(path, lp->log_path) != 0 && in fmd_log_load_xrdir()
305 (xlp = fmd_log_open(lp->log_abi, path, NULL)) != NULL) { in fmd_log_load_xrdir()
306 fmd_log_dprintf(lp, "%s loaded %s for xrefs\n", in fmd_log_load_xrdir()
307 lp->log_path, xlp->log_path); in fmd_log_load_xrdir()
308 xlp->log_xnext = lp->log_xrefs; in fmd_log_load_xrdir()
309 lp->log_xrefs = xlp; in fmd_log_load_xrdir()
321 fmd_log_load_xrefs(fmd_log_t *lp, uint_t iflags, fmd_log_record_t *rp) in fmd_log_load_xrefs() argument
330 if (!(lp->log_flags & FMD_LF_XREFS)) in fmd_log_load_xrefs()
331 fmd_log_load_xrdir(lp); in fmd_log_load_xrefs()
334 return (fmd_log_set_errno(lp, EFDL_NOMEM)); in fmd_log_load_xrefs()
357 if (fmd_log_load_xref(lp, iflags, rp, obj) != 0) in fmd_log_load_xrefs()
366 fmd_log_open_err(fmd_log_t *lp, int *errp, int err) in fmd_log_open_err() argument
371 if (lp != NULL) in fmd_log_open_err()
372 fmd_log_close(lp); in fmd_log_open_err()
381 fmd_log_t *lp; in fmd_log_open() local
387 if ((lp = malloc(sizeof (fmd_log_t))) == NULL) in fmd_log_open()
390 bzero(lp, sizeof (fmd_log_t)); in fmd_log_open()
392 if ((lp->log_path = strdup(name)) == NULL) in fmd_log_open()
393 return (fmd_log_open_err(lp, errp, EFDL_NOMEM)); in fmd_log_open()
395 if ((lp->log_fd = open64(name, O_RDONLY)) == -1 || in fmd_log_open()
396 fstat64(lp->log_fd, &lp->log_stat) == -1 || in fmd_log_open()
397 (fd = dup(lp->log_fd)) == -1) in fmd_log_open()
398 return (fmd_log_open_err(lp, errp, errno)); in fmd_log_open()
400 if (ea_fdopen(&lp->log_ea, fd, FMD_CREATOR, in fmd_log_open()
403 return (fmd_log_open_err(lp, errp, EFDL_EXACCT)); in fmd_log_open()
406 lp->log_abi = abi; in fmd_log_open()
407 lp->log_flags |= FMD_LF_EAOPEN; in fmd_log_open()
409 lp->log_flags |= FMD_LF_DEBUG; in fmd_log_open()
416 if ((grp = ea_get_object_tree(&lp->log_ea, 1)) == NULL) in fmd_log_open()
417 return (fmd_log_open_err(lp, errp, EFDL_EXACCT)); in fmd_log_open()
421 return (fmd_log_open_err(lp, errp, EFDL_EXACCT)); in fmd_log_open()
427 lp->log_version = strdup(obj->eo_item.ei_string); in fmd_log_open()
428 if (lp->log_version == NULL) { in fmd_log_open()
430 return (fmd_log_open_err(lp, errp, EFDL_NOMEM)); in fmd_log_open()
434 lp->log_label = strdup(obj->eo_item.ei_string); in fmd_log_open()
435 if (lp->log_label == NULL) { in fmd_log_open()
437 return (fmd_log_open_err(lp, errp, EFDL_NOMEM)); in fmd_log_open()
441 lp->log_osrelease = strdup(obj->eo_item.ei_string); in fmd_log_open()
442 if (lp->log_osrelease == NULL) { in fmd_log_open()
444 return (fmd_log_open_err(lp, errp, EFDL_NOMEM)); in fmd_log_open()
448 lp->log_osversion = strdup(obj->eo_item.ei_string); in fmd_log_open()
449 if (lp->log_osversion == NULL) { in fmd_log_open()
451 return (fmd_log_open_err(lp, errp, EFDL_NOMEM)); in fmd_log_open()
455 lp->log_platform = strdup(obj->eo_item.ei_string); in fmd_log_open()
456 if (lp->log_platform == NULL) { in fmd_log_open()
458 return (fmd_log_open_err(lp, errp, EFDL_NOMEM)); in fmd_log_open()
462 lp->log_uuid = strdup(obj->eo_item.ei_string); in fmd_log_open()
463 if (lp->log_uuid == NULL) { in fmd_log_open()
465 return (fmd_log_open_err(lp, errp, EFDL_NOMEM)); in fmd_log_open()
473 if (lp->log_version == NULL || lp->log_label == NULL) in fmd_log_open()
474 return (fmd_log_open_err(lp, errp, EFDL_BADHDR)); in fmd_log_open()
481 if ((grp = ea_get_object_tree(&lp->log_ea, 1)) == NULL) in fmd_log_open()
482 return (fmd_log_open_err(lp, errp, EFDL_EXACCT)); in fmd_log_open()
486 return (fmd_log_open_err(lp, errp, EFDL_EXACCT)); in fmd_log_open()
490 lp->log_flags |= FMD_LF_START; in fmd_log_open()
492 fmd_log_dprintf(lp, "open log %s dev=%lx ino=%llx\n", lp->log_path, in fmd_log_open()
493 (ulong_t)lp->log_stat.st_dev, (u_longlong_t)lp->log_stat.st_ino); in fmd_log_open()
495 return (lp); in fmd_log_open()
499 fmd_log_close(fmd_log_t *lp) in fmd_log_close() argument
503 if (lp == NULL) in fmd_log_close()
506 for (xlp = lp->log_xrefs; xlp != NULL; xlp = nlp) { in fmd_log_close()
511 if (lp->log_flags & FMD_LF_EAOPEN) in fmd_log_close()
512 (void) ea_close(&lp->log_ea); in fmd_log_close()
514 if (lp->log_fd >= 0) in fmd_log_close()
515 (void) close(lp->log_fd); in fmd_log_close()
517 free(lp->log_path); in fmd_log_close()
518 free(lp->log_version); in fmd_log_close()
519 free(lp->log_label); in fmd_log_close()
520 free(lp->log_osrelease); in fmd_log_close()
521 free(lp->log_osversion); in fmd_log_close()
522 free(lp->log_platform); in fmd_log_close()
523 free(lp->log_uuid); in fmd_log_close()
525 free(lp); in fmd_log_close()
529 fmd_log_label(fmd_log_t *lp) in fmd_log_label() argument
531 return (lp->log_label); in fmd_log_label()
535 fmd_log_header(fmd_log_t *lp, fmd_log_header_t *hp) in fmd_log_header() argument
537 const char *creator = ea_get_creator(&lp->log_ea); in fmd_log_header()
538 const char *hostname = ea_get_hostname(&lp->log_ea); in fmd_log_header()
542 hp->log_label = lp->log_label ? lp->log_label : ""; in fmd_log_header()
543 hp->log_version = lp->log_version ? lp->log_version : ""; in fmd_log_header()
544 hp->log_osrelease = lp->log_osrelease ? lp->log_osrelease : ""; in fmd_log_header()
545 hp->log_osversion = lp->log_osversion ? lp->log_osversion : ""; in fmd_log_header()
546 hp->log_platform = lp->log_platform ? lp->log_platform : ""; in fmd_log_header()
547 if (lp->log_abi > 1) in fmd_log_header()
548 hp->log_uuid = lp->log_uuid ? lp->log_uuid : ""; in fmd_log_header()
557 fmd_log_rewind(fmd_log_t *lp) in fmd_log_rewind() argument
561 if (!(lp->log_flags & FMD_LF_START)) { in fmd_log_rewind()
562 while (ea_previous_object(&lp->log_ea, &obj) != EO_ERROR) in fmd_log_rewind()
565 if ((grp = ea_get_object_tree(&lp->log_ea, 1)) == NULL) in fmd_log_rewind()
566 return (fmd_log_set_errno(lp, EFDL_EXACCT)); in fmd_log_rewind()
570 if ((grp = ea_get_object_tree(&lp->log_ea, 1)) == NULL) in fmd_log_rewind()
571 return (fmd_log_set_errno(lp, EFDL_EXACCT)); in fmd_log_rewind()
575 lp->log_flags |= FMD_LF_START; in fmd_log_rewind()
582 fmd_log_xiter_filter(fmd_log_t *lp, const fmd_log_record_t *rp, in fmd_log_xiter_filter() argument
589 if (fav[i].filt_argv[j].filt_func(lp, rp, in fmd_log_xiter_filter()
602 fmd_log_xiter_filtcmp(const void *lp, const void *rp) in fmd_log_xiter_filtcmp() argument
604 return ((intptr_t)((fmd_log_filter_t *)lp)->filt_func - in fmd_log_xiter_filtcmp()
609 fmd_log_filter(fmd_log_t *lp, uint_t fc, fmd_log_filter_t *fv, in fmd_log_filter() argument
628 return (fmd_log_xiter_filter(lp, rp, fac, fav)); in fmd_log_filter()
632 fmd_log_xiter(fmd_log_t *lp, uint_t flag, uint_t fc, fmd_log_filter_t *fv, in fmd_log_xiter() argument
642 return (fmd_log_set_errno(lp, EINVAL)); in fmd_log_xiter()
654 return (fmd_log_set_errno(lp, EFDL_NOMEM)); in fmd_log_xiter()
665 lp->log_flags &= ~FMD_LF_START; in fmd_log_xiter()
666 ea_clear(&lp->log_ea); in fmd_log_xiter()
669 if (fmd_log_load_record(lp, flag, &rec) != 0) { in fmd_log_xiter()
670 if (lp->log_errno == EFDL_EXACCT + EXR_EOF) in fmd_log_xiter()
672 rv = efunc ? efunc(lp, private) : -1; in fmd_log_xiter()
675 if (fc == 0 || fmd_log_xiter_filter(lp, &rec, fac, fav)) in fmd_log_xiter()
676 rv = rfunc(lp, &rec, private); in fmd_log_xiter()
693 fmd_log_iter(fmd_log_t *lp, fmd_log_rec_f *rfunc, void *private) in fmd_log_iter() argument
695 return (fmd_log_xiter(lp, 0, 0, NULL, rfunc, NULL, private, NULL)); in fmd_log_iter()
699 fmd_log_seek(fmd_log_t *lp, off64_t off) in fmd_log_seek() argument
701 lp->log_flags &= ~FMD_LF_START; in fmd_log_seek()
702 ea_clear(&lp->log_ea); in fmd_log_seek()
704 if (lseek64(lp->log_fd, off, SEEK_SET) != off) in fmd_log_seek()
705 return (fmd_log_set_errno(lp, errno)); in fmd_log_seek()
733 fmd_log_errmsg(fmd_log_t *lp, int err) in fmd_log_errmsg() argument
746 fmd_log_errno(fmd_log_t *lp) in fmd_log_errno() argument
748 return (lp->log_errno); in fmd_log_errno()