version 1.159, 2014/08/23 18:13:47 |
version 1.161, 2014/09/03 18:09:14 |
|
|
/* $Id$ */ |
/* $OpenBSD$ */ |
/* |
/* |
* Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org> |
|
|
OP_TEST /* change no databases, report potential problems */ |
OP_TEST /* change no databases, report potential problems */ |
}; |
}; |
|
|
enum form { |
|
FORM_NONE, /* format is unknown */ |
|
FORM_SRC, /* format is -man or -mdoc */ |
|
FORM_CAT /* format is cat */ |
|
}; |
|
|
|
struct str { |
struct str { |
char *rendered; /* key in UTF-8 or ASCII form */ |
char *rendered; /* key in UTF-8 or ASCII form */ |
const struct mpage *mpage; /* if set, the owning parse */ |
const struct mpage *mpage; /* if set, the owning parse */ |
|
|
struct mpage { |
struct mpage { |
struct inodev inodev; /* used for hashing routine */ |
struct inodev inodev; /* used for hashing routine */ |
int64_t pageid; /* pageid in mpages SQL table */ |
int64_t pageid; /* pageid in mpages SQL table */ |
enum form form; /* format from file content */ |
|
char *sec; /* section from file content */ |
char *sec; /* section from file content */ |
char *arch; /* architecture from file content */ |
char *arch; /* architecture from file content */ |
char *title; /* title from file content */ |
char *title; /* title from file content */ |
char *desc; /* description from file content */ |
char *desc; /* description from file content */ |
struct mlink *mlinks; /* singly linked list */ |
struct mlink *mlinks; /* singly linked list */ |
|
int form; /* format from file content */ |
}; |
}; |
|
|
struct mlink { |
struct mlink { |
char file[PATH_MAX]; /* filename rel. to manpath */ |
char file[PATH_MAX]; /* filename rel. to manpath */ |
enum form dform; /* format from directory */ |
|
enum form fform; /* format from file name suffix */ |
|
char *dsec; /* section from directory */ |
char *dsec; /* section from directory */ |
char *arch; /* architecture from directory */ |
char *arch; /* architecture from directory */ |
char *name; /* name from file name (not empty) */ |
char *name; /* name from file name (not empty) */ |
char *fsec; /* section from file name suffix */ |
char *fsec; /* section from file name suffix */ |
struct mlink *next; /* singly linked list */ |
struct mlink *next; /* singly linked list */ |
struct mpage *mpage; /* parent */ |
struct mpage *mpage; /* parent */ |
|
int dform; /* format from directory */ |
|
int fform; /* format from file name suffix */ |
int gzip; /* filename has a .gz suffix */ |
int gzip; /* filename has a .gz suffix */ |
}; |
}; |
|
|
Line 838 filescan(const char *file) |
|
Line 832 filescan(const char *file) |
|
} |
} |
|
|
mlink = mandoc_calloc(1, sizeof(struct mlink)); |
mlink = mandoc_calloc(1, sizeof(struct mlink)); |
|
mlink->dform = FORM_NONE; |
if (strlcpy(mlink->file, start, sizeof(mlink->file)) >= |
if (strlcpy(mlink->file, start, sizeof(mlink->file)) >= |
sizeof(mlink->file)) { |
sizeof(mlink->file)) { |
say(start, "Filename too long"); |
say(start, "Filename too long"); |
Line 1226 mpages_merge(struct mchars *mc, struct mparse *mp) |
|
Line 1221 mpages_merge(struct mchars *mc, struct mparse *mp) |
|
mpage->title = |
mpage->title = |
mandoc_strdup(mpage->mlinks->name); |
mandoc_strdup(mpage->mlinks->name); |
} |
} |
|
if (mpage->mlinks->gzip) |
|
mpage->form |= FORM_GZ; |
putkey(mpage, mpage->sec, TYPE_sec); |
putkey(mpage, mpage->sec, TYPE_sec); |
putkey(mpage, '\0' == *mpage->arch ? |
putkey(mpage, '\0' == *mpage->arch ? |
any : mpage->arch, TYPE_arch); |
any : mpage->arch, TYPE_arch); |
Line 1984 dbadd_mlink(const struct mlink *mlink) |
|
Line 1981 dbadd_mlink(const struct mlink *mlink) |
|
SQL_BIND_INT64(stmts[STMT_INSERT_LINK], i, mlink->mpage->pageid); |
SQL_BIND_INT64(stmts[STMT_INSERT_LINK], i, mlink->mpage->pageid); |
SQL_STEP(stmts[STMT_INSERT_LINK]); |
SQL_STEP(stmts[STMT_INSERT_LINK]); |
sqlite3_reset(stmts[STMT_INSERT_LINK]); |
sqlite3_reset(stmts[STMT_INSERT_LINK]); |
|
|
|
i = 1; |
|
SQL_BIND_INT64(stmts[STMT_INSERT_NAME], i, NAME_FILE); |
|
SQL_BIND_TEXT(stmts[STMT_INSERT_NAME], i, mlink->name); |
|
SQL_BIND_INT64(stmts[STMT_INSERT_NAME], i, mlink->mpage->pageid); |
|
SQL_STEP(stmts[STMT_INSERT_NAME]); |
|
sqlite3_reset(stmts[STMT_INSERT_NAME]); |
} |
} |
|
|
/* |
/* |
Line 2050 dbadd(struct mpage *mpage, struct mchars *mc) |
|
Line 2054 dbadd(struct mpage *mpage, struct mchars *mc) |
|
|
|
i = 1; |
i = 1; |
SQL_BIND_TEXT(stmts[STMT_INSERT_PAGE], i, key->rendered); |
SQL_BIND_TEXT(stmts[STMT_INSERT_PAGE], i, key->rendered); |
SQL_BIND_INT(stmts[STMT_INSERT_PAGE], i, FORM_SRC == mpage->form); |
SQL_BIND_INT(stmts[STMT_INSERT_PAGE], i, mpage->form); |
SQL_STEP(stmts[STMT_INSERT_PAGE]); |
SQL_STEP(stmts[STMT_INSERT_PAGE]); |
mpage->pageid = sqlite3_last_insert_rowid(db); |
mpage->pageid = sqlite3_last_insert_rowid(db); |
sqlite3_reset(stmts[STMT_INSERT_PAGE]); |
sqlite3_reset(stmts[STMT_INSERT_PAGE]); |