/* Do not edit: automatically built by gen_rec.awk. */ #include "db_config.h" #include "db_int.h" #include "dbinc/db_page.h" #include "dbinc/db_am.h" #include "dbinc/log.h" #include "dbinc/mp.h" #include "dbinc/txn.h" /* * PUBLIC: int __rep_update_buf __P((u_int8_t *, size_t, size_t *, * PUBLIC: DB_LSN *, u_int32_t, u_int32_t)); */ int __rep_update_buf(buf, max, lenp, first_lsn, first_vers, num_files) u_int8_t *buf; size_t max, *lenp; DB_LSN * first_lsn; u_int32_t first_vers; u_int32_t num_files; { u_int32_t uinttmp; u_int8_t *endbuf; u_int8_t *bp; int ret; ret = 0; bp = buf; endbuf = bp + max; if (bp + sizeof(*first_lsn) > endbuf) return (ENOMEM); if (first_lsn != NULL) memcpy(bp, first_lsn, sizeof(*first_lsn)); else memset(bp, 0, sizeof(*first_lsn)); bp += sizeof(*first_lsn); uinttmp = (u_int32_t)first_vers; if (bp + sizeof(uinttmp) > endbuf) return (ENOMEM); memcpy(bp, &uinttmp, sizeof(uinttmp)); bp += sizeof(uinttmp); uinttmp = (u_int32_t)num_files; if (bp + sizeof(uinttmp) > endbuf) return (ENOMEM); memcpy(bp, &uinttmp, sizeof(uinttmp)); bp += sizeof(uinttmp); *lenp = (u_int32_t)(bp - buf); return (ret); } /* * PUBLIC: int __rep_update_read __P((DB_ENV *, void *, void **, * PUBLIC: __rep_update_args **)); */ int __rep_update_read(dbenv, recbuf, nextp, argpp) DB_ENV *dbenv; void *recbuf; void **nextp; __rep_update_args **argpp; { __rep_update_args *argp; u_int32_t uinttmp; u_int8_t *bp; int ret; if ((ret = __os_malloc(dbenv, sizeof(__rep_update_args), &argp)) != 0) return (ret); bp = recbuf; memcpy(&argp->first_lsn, bp, sizeof(argp->first_lsn)); bp += sizeof(argp->first_lsn); memcpy(&uinttmp, bp, sizeof(uinttmp)); argp->first_vers = (u_int32_t)uinttmp; bp += sizeof(uinttmp); memcpy(&uinttmp, bp, sizeof(uinttmp)); argp->num_files = (u_int32_t)uinttmp; bp += sizeof(uinttmp); *nextp = bp; *argpp = argp; return (0); } /* * PUBLIC: int __rep_fileinfo_buf __P((u_int8_t *, size_t, size_t *, * PUBLIC: u_int32_t, db_pgno_t, db_pgno_t, u_int32_t, int32_t, u_int32_t, * PUBLIC: u_int32_t, const DBT *, const DBT *)); */ int __rep_fileinfo_buf(buf, max, lenp, pgsize, pgno, max_pgno, filenum, id, type, flags, uid, info) u_int8_t *buf; size_t max, *lenp; u_int32_t pgsize; db_pgno_t pgno; db_pgno_t max_pgno; u_int32_t filenum; int32_t id; u_int32_t type; u_int32_t flags; const DBT *uid; const DBT *info; { u_int32_t zero; u_int32_t uinttmp; u_int8_t *endbuf; u_int8_t *bp; int ret; ret = 0; bp = buf; endbuf = bp + max; uinttmp = (u_int32_t)pgsize; if (bp + sizeof(uinttmp) > endbuf) return (ENOMEM); memcpy(bp, &uinttmp, sizeof(uinttmp)); bp += sizeof(uinttmp); uinttmp = (u_int32_t)pgno; if (bp + sizeof(uinttmp) > endbuf) return (ENOMEM); memcpy(bp, &uinttmp, sizeof(uinttmp)); bp += sizeof(uinttmp); uinttmp = (u_int32_t)max_pgno; if (bp + sizeof(uinttmp) > endbuf) return (ENOMEM); memcpy(bp, &uinttmp, sizeof(uinttmp)); bp += sizeof(uinttmp); uinttmp = (u_int32_t)filenum; if (bp + sizeof(uinttmp) > endbuf) return (ENOMEM); memcpy(bp, &uinttmp, sizeof(uinttmp)); bp += sizeof(uinttmp); uinttmp = (u_int32_t)id; if (bp + sizeof(uinttmp) > endbuf) return (ENOMEM); memcpy(bp, &uinttmp, sizeof(uinttmp)); bp += sizeof(uinttmp); uinttmp = (u_int32_t)type; if (bp + sizeof(uinttmp) > endbuf) return (ENOMEM); memcpy(bp, &uinttmp, sizeof(uinttmp)); bp += sizeof(uinttmp); uinttmp = (u_int32_t)flags; if (bp + sizeof(uinttmp) > endbuf) return (ENOMEM); memcpy(bp, &uinttmp, sizeof(uinttmp)); bp += sizeof(uinttmp); if (uid == NULL) { zero = 0; if (bp + sizeof(u_int32_t) > endbuf) return (ENOMEM); memcpy(bp, &zero, sizeof(u_int32_t)); bp += sizeof(u_int32_t); } else { if (bp + sizeof(uid->size) > endbuf) return (ENOMEM); memcpy(bp, &uid->size, sizeof(uid->size)); bp += sizeof(uid->size); if (bp + uid->size > endbuf) return (ENOMEM); memcpy(bp, uid->data, uid->size); bp += uid->size; } if (info == NULL) { zero = 0; if (bp + sizeof(u_int32_t) > endbuf) return (ENOMEM); memcpy(bp, &zero, sizeof(u_int32_t)); bp += sizeof(u_int32_t); } else { if (bp + sizeof(info->size) > endbuf) return (ENOMEM); memcpy(bp, &info->size, sizeof(info->size)); bp += sizeof(info->size); if (bp + info->size > endbuf) return (ENOMEM); memcpy(bp, info->data, info->size); bp += info->size; } *lenp = (u_int32_t)(bp - buf); return (ret); } /* * PUBLIC: int __rep_fileinfo_read __P((DB_ENV *, void *, void **, * PUBLIC: __rep_fileinfo_args **)); */ int __rep_fileinfo_read(dbenv, recbuf, nextp, argpp) DB_ENV *dbenv; void *recbuf; void **nextp; __rep_fileinfo_args **argpp; { __rep_fileinfo_args *argp; u_int32_t uinttmp; u_int8_t *bp; int ret; if ((ret = __os_malloc(dbenv, sizeof(__rep_fileinfo_args), &argp)) != 0) return (ret); bp = recbuf; memcpy(&uinttmp, bp, sizeof(uinttmp)); argp->pgsize = (u_int32_t)uinttmp; bp += sizeof(uinttmp); memcpy(&uinttmp, bp, sizeof(uinttmp)); argp->pgno = (db_pgno_t)uinttmp; bp += sizeof(uinttmp); memcpy(&uinttmp, bp, sizeof(uinttmp)); argp->max_pgno = (db_pgno_t)uinttmp; bp += sizeof(uinttmp); memcpy(&uinttmp, bp, sizeof(uinttmp)); argp->filenum = (u_int32_t)uinttmp; bp += sizeof(uinttmp); memcpy(&uinttmp, bp, sizeof(uinttmp)); argp->id = (int32_t)uinttmp; bp += sizeof(uinttmp); memcpy(&uinttmp, bp, sizeof(uinttmp)); argp->type = (u_int32_t)uinttmp; bp += sizeof(uinttmp); memcpy(&uinttmp, bp, sizeof(uinttmp)); argp->flags = (u_int32_t)uinttmp; bp += sizeof(uinttmp); memset(&argp->uid, 0, sizeof(argp->uid)); memcpy(&argp->uid.size, bp, sizeof(u_int32_t)); bp += sizeof(u_int32_t); argp->uid.data = bp; bp += argp->uid.size; memset(&argp->info, 0, sizeof(argp->info)); memcpy(&argp->info.size, bp, sizeof(u_int32_t)); bp += sizeof(u_int32_t); argp->info.data = bp; bp += argp->info.size; *nextp = bp; *argpp = argp; return (0); }