From f975e971accc4d50c73ae53167db3df7a7099cf2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 1 Aug 2011 00:43:05 +0200 Subject: load-fragment: speed up parsing by using a perfect hash table with configuration settings built by gperf --- src/tty-ask-password-agent.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'src/tty-ask-password-agent.c') diff --git a/src/tty-ask-password-agent.c b/src/tty-ask-password-agent.c index 02b959ea59..ca183c350b 100644 --- a/src/tty-ask-password-agent.c +++ b/src/tty-ask-password-agent.c @@ -250,13 +250,13 @@ static int parse_password(const char *filename, char **wall) { int socket_fd = -1; bool accept_cached = false; - const ConfigItem items[] = { - { "Socket", config_parse_string, 0, &socket_name, "Ask" }, - { "NotAfter", config_parse_uint64, 0, ¬_after, "Ask" }, - { "Message", config_parse_string, 0, &message, "Ask" }, - { "PID", config_parse_unsigned, 0, &pid, "Ask" }, - { "AcceptCached", config_parse_bool, 0, &accept_cached, "Ask" }, - { NULL, NULL, 0, NULL, NULL } + const ConfigTableItem items[] = { + { "Ask", "Socket", config_parse_string, 0, &socket_name }, + { "Ask", "NotAfter", config_parse_uint64, 0, ¬_after }, + { "Ask", "Message", config_parse_string, 0, &message }, + { "Ask", "PID", config_parse_unsigned, 0, &pid }, + { "Ask", "AcceptCached", config_parse_bool, 0, &accept_cached }, + { NULL, NULL, NULL, 0, NULL } }; FILE *f; @@ -264,8 +264,8 @@ static int parse_password(const char *filename, char **wall) { assert(filename); - if (!(f = fopen(filename, "re"))) { - + f = fopen(filename, "re"); + if (!f) { if (errno == ENOENT) return 0; @@ -273,7 +273,8 @@ static int parse_password(const char *filename, char **wall) { return -errno; } - if ((r = config_parse(filename, f, NULL, items, true, NULL)) < 0) { + r = config_parse(filename, f, NULL, config_item_table_lookup, (void*) items, true, NULL); + if (r < 0) { log_error("Failed to parse password file %s: %s", filename, strerror(-r)); goto finish; } -- cgit v1.2.3-54-g00ecf