From patchwork Sat Jun 23 16:36:47 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gregor Jasny X-Patchwork-Id: 13042 Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.72) (envelope-from ) id 1SiTLF-0002xm-HK for patchwork@linuxtv.org; Sat, 23 Jun 2012 18:37:45 +0200 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.75/mailfrontend-3) with esmtp for id 1SiTLF-0001D4-DA; Sat, 23 Jun 2012 18:37:45 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755446Ab2FWQhl (ORCPT ); Sat, 23 Jun 2012 12:37:41 -0400 Received: from mail-bk0-f46.google.com ([209.85.214.46]:60850 "EHLO mail-bk0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755305Ab2FWQha (ORCPT ); Sat, 23 Jun 2012 12:37:30 -0400 Received: by mail-bk0-f46.google.com with SMTP id ji2so2283417bkc.19 for ; Sat, 23 Jun 2012 09:37:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=VyAehk4f90cGsfkvZBhMY1r5sGut96rsm3L+Ii5v/SI=; b=h9HjM6QLZ1BLsBxoHLee2lwK9socjALt1akojt2Jvs9RFhSgqyrjUo+Smw71dHtyrl lbjAtfNneHk6HfRCo0fP/P4ZsXYcSnkyVEz301eEJFswq3JVhwES0h6LXCKIvEQ88FZZ 2EO7VMf6i8g8KjwsogP6BTk/pmpQuFOEmI5wsA0ZdFnIbfJEsNfWBoQszOxe2J2OaMap cFnGC53OPkldA18mxtBe98F8RRIEgS53fVDFrXOwxua08t5XxbqBfJ73rJjKBiEQ0XKp c+46I96D6HNAs8kFG09g7qtcUwsceL17ZyOJs3Mdz1NBiv+E6ZBodT8ilO1ryfO13DRr MaDw== Received: by 10.205.116.203 with SMTP id fj11mr2116996bkc.108.1340469450004; Sat, 23 Jun 2012 09:37:30 -0700 (PDT) Received: from sid.fritz.box (f053083223.adsl.alicedsl.de. [78.53.83.223]) by mx.google.com with ESMTPS id ie3sm39873527bkc.1.2012.06.23.09.37.28 (version=TLSv1/SSLv3 cipher=OTHER); Sat, 23 Jun 2012 09:37:29 -0700 (PDT) From: Gregor Jasny To: linux-media@vger.kernel.org Cc: mchehab@redhat.com, Gregor Jasny Subject: [PATCH 3/3] keytable: first search table in userdir, then in systemdir Date: Sat, 23 Jun 2012 18:36:47 +0200 Message-Id: <1340469407-25580-4-git-send-email-gjasny@googlemail.com> X-Mailer: git-send-email 1.7.10 In-Reply-To: <1340469407-25580-1-git-send-email-gjasny@googlemail.com> References: <1340469407-25580-1-git-send-email-gjasny@googlemail.com> Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 5.6.1.2065439, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2012.6.23.162422 X-PMX-Spam: Gauge=IIIIIIII, Probability=8%, Report=' MULTIPLE_RCPTS 0.1, HTML_00_01 0.05, HTML_00_10 0.05, BODY_SIZE_3000_3999 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, URI_ENDS_IN_HTML 0, __ANY_URI 0, __CP_URI_IN_BODY 0, __FRAUD_BODY_WEBMAIL 0, __FRAUD_WEBMAIL 0, __FRAUD_WEBMAIL_FROM 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_X_MAILER 0, __HAS_X_MAILING_LIST 0, __MIME_TEXT_ONLY 0, __MULTIPLE_RCPTS_CC_X2 0, __PHISH_SPEAR_STRUCTURE_1 0, __SANE_MSGID 0, __SUBJ_ALPHA_END 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_NO_WWW 0, __URI_NS ' Signed-off-by: Gregor Jasny --- configure.ac | 5 ++++- utils/keytable/Makefile.am | 2 ++ utils/keytable/keytable.c | 27 +++++++++++++++++++++------ 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/configure.ac b/configure.ac index 661eb20..a1230b2 100644 --- a/configure.ac +++ b/configure.ac @@ -153,7 +153,8 @@ libv4l2privdir="$libdir/$libv4l2subdir" libv4l2plugindir="$libv4l2privdir/plugins" libv4lconvertprivdir="$libdir/$libv4lconvertsubdir" -keytablesystemdir="$sysconfdir/rc_keymaps" +keytablesystemdir="$udevdir/rc_keymaps" +keytableuserdir="$sysconfdir/rc_keymaps" udevrulesdir="$udevdir/rules.d" pkgconfigdir="$libdir/pkgconfig" @@ -162,6 +163,7 @@ AC_SUBST(libv4l2privdir) AC_SUBST(libv4l2plugindir) AC_SUBST(libv4lconvertprivdir) AC_SUBST(keytablesystemdir) +AC_SUBST(keytableuserdir) AC_SUBST(udevrulesdir) AC_SUBST(pkgconfigdir) @@ -171,6 +173,7 @@ AC_DEFINE_DIR([LIBV4L2_PRIV_DIR], [libv4l2privdir], [libv4l2 private lib directo AC_DEFINE_DIR([LIBV4L2_PLUGIN_DIR], [libv4l2plugindir], [libv4l2 plugin directory]) AC_DEFINE_DIR([LIBV4LCONVERT_PRIV_DIR], [libv4lconvertprivdir], [libv4lconvert private lib directory]) AC_DEFINE_DIR([IR_KEYTABLE_SYSTEM_DIR], [keytablesystemdir], [ir-keytable preinstalled tables directory]) +AC_DEFINE_DIR([IR_KEYTABLE_USER_DIR], [keytableuserdir], [ir-keytable user defined tables directory]) # options diff --git a/utils/keytable/Makefile.am b/utils/keytable/Makefile.am index 4505fc1..886d800 100644 --- a/utils/keytable/Makefile.am +++ b/utils/keytable/Makefile.am @@ -10,6 +10,8 @@ ir_keytable_LDFLAGS = $(ARGP_LIBS) EXTRA_DIST = 70-infrared.rules rc_keymaps gen_keytables.pl ir-keytable.1 rc_maps.cfg # custom target +install-data-local: + $(install_sh) -d "$(DESTDIR)$(keytableuserdir)" sync-with-kernel: @if [ ! -f $(KERNEL_DIR)/include/linux/input.h ]; then \ diff --git a/utils/keytable/keytable.c b/utils/keytable/keytable.c index 31376f3..bccd325 100644 --- a/utils/keytable/keytable.c +++ b/utils/keytable/keytable.c @@ -194,7 +194,6 @@ static error_t parse_keyfile(char *fname, char **table) fin = fopen(fname, "r"); if (!fin) { - perror("opening keycode file"); return errno; } @@ -1512,15 +1511,31 @@ int main(int argc, char *argv[]) cur->fname); if (cur->fname[0] == '/' || ((cur->fname[0] == '.') && strchr(cur->fname, '/'))) { fname = cur->fname; + rc = parse_keyfile(fname, &name); + if (rc < 0) { + fprintf(stderr, "Can't load %s table\n", fname); + return -1; + } } else { - fname = malloc(strlen(cur->fname) + strlen(IR_KEYTABLE_SYSTEM_DIR) + 2); - strcpy(fname, IR_KEYTABLE_SYSTEM_DIR); + fname = malloc(strlen(cur->fname) + strlen(IR_KEYTABLE_USER_DIR) + 2); + strcpy(fname, IR_KEYTABLE_USER_DIR); strcat(fname, "/"); strcat(fname, cur->fname); + rc = parse_keyfile(fname, &name); + if (rc != 0) { + fname = malloc(strlen(cur->fname) + strlen(IR_KEYTABLE_SYSTEM_DIR) + 2); + strcpy(fname, IR_KEYTABLE_SYSTEM_DIR); + strcat(fname, "/"); + strcat(fname, cur->fname); + rc = parse_keyfile(fname, &name); + } + if (rc != 0) { + fprintf(stderr, "Can't load %s table from %s or %s\n", cur->fname, IR_KEYTABLE_USER_DIR, IR_KEYTABLE_SYSTEM_DIR); + return -1; + } } - rc = parse_keyfile(fname, &name); - if (rc < 0 || !keys.next) { - fprintf(stderr, "Can't load %s table or empty table\n", fname); + if (!keys.next) { + fprintf(stderr, "Empty table %s\n", fname); return -1; } clear = 1;