diff --git a/0001-Changing-effective-user-default.patch b/0001-Changing-effective-user-default.patch new file mode 100644 index 0000000..c562239 --- /dev/null +++ b/0001-Changing-effective-user-default.patch @@ -0,0 +1,24 @@ +From 184366b6200c80fae167853bab0038a54538ad16 Mon Sep 17 00:00:00 2001 +From: Alec Leamas +Date: Thu, 11 Dec 2014 00:30:23 +0100 +Subject: [PATCH] Changing effective-user default + +--- + lirc_options.conf | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/lirc_options.conf b/lirc_options.conf +index 9dc672a..bf342c1 100644 +--- a/lirc_options.conf ++++ b/lirc_options.conf +@@ -12,6 +12,7 @@ plugindir = /usr/lib/lirc/plugins + permission = 666 + allow-simulate = No + repeat-max = 600 ++effective-user = lirc + #listen = [address:]port + #connect = host[:port] + #debug = 6 +-- +1.9.3 + diff --git a/0001-Fix-segfault-when-starting-lircd-AUR-41581.patch b/0001-Fix-segfault-when-starting-lircd-AUR-41581.patch deleted file mode 100644 index 57c88aa..0000000 --- a/0001-Fix-segfault-when-starting-lircd-AUR-41581.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 8459a881fd53525a47ae2f9180fa3644be5df343 Mon Sep 17 00:00:00 2001 -From: Alec Leamas -Date: Mon, 18 Aug 2014 10:00:49 +0200 -Subject: [PATCH 1/3] Fix segfault when starting lircd (AUR 41581) - -See https://bugs.archlinux.org/task/41581 ---- - lirc_options.conf | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lirc_options.conf b/lirc_options.conf -index d8ddedd..11293e2 100644 ---- a/lirc_options.conf -+++ b/lirc_options.conf -@@ -7,7 +7,7 @@ nodaemon = False - permission = 666 - driver = default - device = /dev/lirc0 --output = /var/run/lirc/lircd -+lircdfile = /var/run/lirc/lircd - pidfile = /var/run/lirc/lircd.pid - plugindir = /usr/lib/lirc/plugins - allow-simulate = No --- -1.8.4.2 - diff --git a/0002-lircd-Fix-bad-default-for-lircdfile.patch b/0002-lircd-Fix-bad-default-for-lircdfile.patch deleted file mode 100644 index 946fa21..0000000 --- a/0002-lircd-Fix-bad-default-for-lircdfile.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 4a9b45822890f50c5ed36660468e0a99cd4531e0 Mon Sep 17 00:00:00 2001 -From: Alec Leamas -Date: Mon, 18 Aug 2014 10:05:44 +0200 -Subject: [PATCH 2/3] lircd: Fix bad default for lircdfile. - ---- - daemons/lircd.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/daemons/lircd.c b/daemons/lircd.c -index db8ea13..fa8cf17 100644 ---- a/daemons/lircd.c -+++ b/daemons/lircd.c -@@ -2147,7 +2147,7 @@ static void lircd_add_defaults(void) - "lircd:device", LIRC_DRIVER_DEVICE, - "lircd:listen", NULL , - "lircd:connect", NULL, -- "lircd:output", LIRCD, -+ "lircd:lircdfile", LIRCD, - "lircd:pidfile", PIDFILE, - "lircd:logfile", LOGFILE, - "lircd:debug", "False", --- -1.8.4.2 - diff --git a/0002-tools-Make-make_rel_symlink.py-use-python3.patch b/0002-tools-Make-make_rel_symlink.py-use-python3.patch new file mode 100644 index 0000000..506baa9 --- /dev/null +++ b/0002-tools-Make-make_rel_symlink.py-use-python3.patch @@ -0,0 +1,42 @@ +From 1b347e9e7909afd08fce12992da67340144aeb70 Mon Sep 17 00:00:00 2001 +From: Alec Leamas +Date: Thu, 11 Dec 2014 04:44:49 +0100 +Subject: [PATCH 1/5] tools: Make make_rel_symlink.py use python3. + +--- + tools/make_rel_symlink.py | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/tools/make_rel_symlink.py b/tools/make_rel_symlink.py +index 5c89305..896637f 100755 +--- a/tools/make_rel_symlink.py ++++ b/tools/make_rel_symlink.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + import os + import os.path +@@ -32,16 +32,16 @@ if sys.argv[1] == "-p": + sys.argv = sys.argv[ 1:] + + if len( sys.argv ) != 3: +- print USAGE ++ print(USAGE) + sys.exit( 1 ) + + if os.path.isdir( sys.argv[2] ): +- print "Removing link target dir:" + sys.argv[2] ++ print("Removing link target dir:" + sys.argv[2]) + shutil.rmtree( sys.argv[2]) + + link_path = relative_ln_s( sys.argv[1], sys.argv[2] ) + if just_print: +- print link_path ++ print(link_path) + else: + os.chdir( os.path.dirname( sys.argv[2])) + target = os.path.basename( sys.argv[2]) +-- +1.9.3 + diff --git a/0003-0.9.1a-Bugfix-segfault-when-parsing-connect-in-confi.patch b/0003-0.9.1a-Bugfix-segfault-when-parsing-connect-in-confi.patch deleted file mode 100644 index 5b6dca7..0000000 --- a/0003-0.9.1a-Bugfix-segfault-when-parsing-connect-in-confi.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 3ebd89ac194279fb56d781d03a5368f4b0e76caa Mon Sep 17 00:00:00 2001 -From: Andreas Bader -Date: Tue, 19 Aug 2014 16:58:21 +0200 -Subject: [PATCH 3/3] 0.9.1a: Bugfix: segfault when parsing --connect in config - file. - ---- - daemons/lircd.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/daemons/lircd.c b/daemons/lircd.c -index fa8cf17..7af4265 100644 ---- a/daemons/lircd.c -+++ b/daemons/lircd.c -@@ -2311,7 +2311,7 @@ int main(int argc, char **argv) - } - opt = options_getstring("lircd:connect"); - if (opt != NULL) { -- if (!add_peer_connection(optarg)) -+ if (!add_peer_connection(opt)) - return(EXIT_FAILURE); - } - # ifdef DEBUG --- -1.8.4.2 - diff --git a/0003-all-Use-puts-instead-of-printf-when-applicable.patch b/0003-all-Use-puts-instead-of-printf-when-applicable.patch new file mode 100644 index 0000000..d3a04ae --- /dev/null +++ b/0003-all-Use-puts-instead-of-printf-when-applicable.patch @@ -0,0 +1,1031 @@ +From 25523fe4bfb383ae1d34843292544fef7145eb2a Mon Sep 17 00:00:00 2001 +From: Alec Leamas +Date: Thu, 11 Dec 2014 10:38:38 +0100 +Subject: [PATCH 3/5] all: Use puts() instead of printf() when applicable. + +Recent gcc compilers emits warnings when using printf() on +constant data where puts()/fputs() is a better choice. +--- + daemons/lircd.c | 4 +- + daemons/lircmd.c | 2 +- + lib/lirc_client.c | 2 + + tools/irrecord.c | 105 +++++++++++++++++++++++++------------------------ + tools/irsend.c | 2 +- + tools/irsimreceive.c | 26 ++++++------ + tools/irsimsend.c | 14 +++---- + tools/irtestcase.c | 27 ++++++------- + tools/lirc-lsplugins.c | 34 ++++++++-------- + tools/lirc-lsremotes.c | 14 +++---- + tools/mode2.c | 38 +++++++++--------- + tools/xmode2.c | 23 +++++------ + 12 files changed, 148 insertions(+), 143 deletions(-) + +diff --git a/daemons/lircd.c b/daemons/lircd.c +index 3a7f744..ab44e80 100644 +--- a/daemons/lircd.c ++++ b/daemons/lircd.c +@@ -2266,7 +2266,7 @@ static void lircd_parse_options(int argc, char** const argv) + { + switch (c) { + case 'h': +- printf(help); ++ puts(help); + exit(EXIT_SUCCESS); + case 'v': + printf("lircd %s\n", VERSION); +@@ -2414,7 +2414,7 @@ int main(int argc, char **argv) + opt = options_getstring("lircd:listen_hostport"); + if (opt){ + if (opt2host_port(opt, &address, &port, errmsg) != 0){ +- fprintf(stderr, errmsg); ++ fputs(errmsg, stderr); + return(EXIT_FAILURE); + } + } else +diff --git a/daemons/lircmd.c b/daemons/lircmd.c +index 023777c..869b3a9 100644 +--- a/daemons/lircmd.c ++++ b/daemons/lircmd.c +@@ -784,7 +784,7 @@ static void lircmd_parse_options(int argc, char** const argv) + { + switch (c) { + case 'h': +- printf(help); ++ puts(help); + exit(EXIT_SUCCESS); + case 'v': + printf("lircmd %s\n", VERSION); +diff --git a/lib/lirc_client.c b/lib/lirc_client.c +index c441803..4720f3f 100644 +--- a/lib/lirc_client.c ++++ b/lib/lirc_client.c +@@ -105,6 +105,8 @@ chk_write(int fd, const void *buf, size_t count, const char* msg) + perror(msg); + } + } ++ ++ + int lirc_command_init(lirc_cmd_ctx* ctx, const char* fmt, ...) + { + va_list ap; +diff --git a/tools/irrecord.c b/tools/irrecord.c +index f52328c..788e425 100644 +--- a/tools/irrecord.c ++++ b/tools/irrecord.c +@@ -339,7 +339,7 @@ static void parse_options(int argc, char** const argv) + options_set_opt("irrecord:driver", optarg); + break; + case 'h': +- printf(help); ++ puts(help); + exit(EXIT_SUCCESS); + case 'i': + options_set_opt("irrecord:invert", "True"); +@@ -374,14 +374,14 @@ static void parse_options(int argc, char** const argv) + printf("irrecord %s\n", VERSION); + exit(EXIT_SUCCESS); + default: +- fprintf(stderr, USAGE); ++ fputs(USAGE, stderr); + exit(EXIT_FAILURE); + } + } + if (optind == argc - 1) { + options_set_opt("configfile", argv[optind]); + } else if (optind != argc) { +- fprintf(stderr, "irrecord: invalid argument count\n"); ++ fputs("irrecord: invalid argument count\n", stderr); + exit(EXIT_FAILURE); + } + } +@@ -416,7 +416,7 @@ int main(int argc, char **argv) + analyse = options_getboolean("irrecord:analyse"); + if (hw_choose_driver(opt) != 0 && ! analyse) { + fprintf(stderr, "Driver `%s' not found", opt); +- fprintf(stderr, " (wrong or missing -U/--plugindir?).\n"); ++ fputs(" (wrong or missing -U/--plugindir?).\n", stderr); + hw_print_drivers(stderr); + exit(EXIT_FAILURE); + } +@@ -526,9 +526,9 @@ int main(int argc, char **argv) + perror(progname); + exit(EXIT_FAILURE); + } +- printf("\nirrecord - application for recording IR-codes" " for usage with lirc\n" "\n" ++ puts("\nirrecord - application for recording IR-codes" " for usage with lirc\n" "\n" + "Copyright (C) 1998,1999 Christoph Bartelmus" "(lirc@bartelmus.de)\n"); +- printf("\n"); ++ puts("\n"); + + if (curr_driver->init_func) { + if (!curr_driver->init_func()) { +@@ -561,16 +561,16 @@ int main(int argc, char **argv) + exit(EXIT_FAILURE); + } + +- printf("This program will record the signals from your remote control\n" ++ puts("This program will record the signals from your remote control\n" + "and create a config file for lircd.\n\n" "\n"); + if (curr_driver->name && strcmp(curr_driver->name, "devinput") == 0) { +- printf("Usually it's not necessary to create a new config file for devinput\n" ++ puts("Usually it's not necessary to create a new config file for devinput\n" + "devices. A generic config file can be found at:\n" + "https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/devinput/devinput.lircd.conf" + "It can be downloaded using irdb-get(1)\n" + "Please try this config file before creating your own.\n" "\n"); + } +- printf("A proper config file for lircd is maybe the most vital part of this\n" ++ puts("A proper config file for lircd is maybe the most vital part of this\n" + "package, so you should invest some time to create a working config\n" + "file. Although I put a good deal of effort in this program it is often\n" + "not possible to automatically recognize all features of a remote\n" +@@ -610,7 +610,7 @@ int main(int argc, char **argv) + curr_driver->deinit_func(); + exit(EXIT_FAILURE); + } +- printf("Creating config file in raw mode.\n"); ++ puts("Creating config file in raw mode.\n"); + set_protocol(&remote, RAW_CODES); + remote.eps = eps; + remote.aeps = aeps; +@@ -643,7 +643,7 @@ int main(int argc, char **argv) + curr_driver->rec_func(NULL); + } + if (!get_toggle_bit_mask(&remote)) { +- printf("But I know for sure that RC6 has a toggle bit!\n"); ++ puts("But I know for sure that RC6 has a toggle bit!\n"); + fclose(fout); + unlink(filename); + if (curr_driver->deinit_func) +@@ -651,7 +651,7 @@ int main(int argc, char **argv) + exit(EXIT_FAILURE); + } + } +- printf("Now enter the names for the buttons.\n"); ++ puts("Now enter the names for the buttons.\n"); + + fprint_copyright(fout); + fprint_comment(fout, &remote, commandline); +@@ -663,8 +663,8 @@ int main(int argc, char **argv) + + if (no_data) { + fprintf(stderr, "%s: no data for 10 secs," " aborting\n", progname); +- printf("The last button did not seem to generate any signal.\n"); +- printf("Press RETURN to continue.\n\n"); ++ puts("The last button did not seem to generate any signal.\n"); ++ puts("Press RETURN to continue.\n\n"); + getchar(); + no_data = 0; + } +@@ -678,13 +678,13 @@ int main(int argc, char **argv) + } + buffer[strlen(buffer) - 1] = 0; + if (strchr(buffer, ' ') || strchr(buffer, '\t')) { +- printf("The name must not contain any whitespace.\n"); +- printf("Please try again.\n"); ++ puts("The name must not contain any whitespace.\n"); ++ puts("Please try again.\n"); + continue; + } + if (strcasecmp(buffer, "begin") == 0 || strcasecmp(buffer, "end") == 0) { + printf("'%s' is not allowed as button name\n", buffer); +- printf("Please try again.\n"); ++ puts("Please try again.\n"); + continue; + } + if (strlen(buffer) == 0) { +@@ -693,7 +693,7 @@ int main(int argc, char **argv) + if (!disable_namespace && !is_in_namespace(buffer)) { + printf("'%s' is not in name space (use --disable-namespace to disable checks)\n", buffer); + printf("Use '%s --list-namespace' to see a full list of valid button names\n", progname); +- printf("Please try again.\n"); ++ puts("Please try again.\n"); + continue; + } + +@@ -730,9 +730,9 @@ int main(int argc, char **argv) + } + if (count == 0) { + if (!is_space(data) || data < remote.gap - remote.gap * remote.eps / 100) { +- printf("Sorry, something went wrong.\n"); ++ puts("Sorry, something went wrong.\n"); + sleep(3); +- printf("Try again.\n"); ++ puts("Try again.\n"); + flushhw(); + count = 0; + continue; +@@ -742,13 +742,13 @@ int main(int argc, char **argv) + && (is_const(&remote) ? data > + (remote.gap > sum ? (remote.gap - sum) * (100 - remote.eps) / 100 : 0) + : data > remote.gap * (100 - remote.eps) / 100)) { +- printf("Got it.\n"); ++ puts("Got it.\n"); + printf("Signal length is %d\n", count - 1); + if (count % 2) { +- printf("That's weird because the signal length " ++ puts("That's weird because the signal length " + "must be odd!\n"); + sleep(3); +- printf("Try again.\n"); ++ puts("Try again.\n"); + flushhw(); + count = 0; + continue; +@@ -766,7 +766,7 @@ int main(int argc, char **argv) + count++; + } + if (count == MAX_SIGNALS) { +- printf("Signal is too long.\n"); ++ puts("Signal is too long.\n"); + } + if (retval == EXIT_FAILURE) + break; +@@ -814,7 +814,7 @@ int main(int argc, char **argv) + } + break; + } else { +- printf("Something went wrong. "); ++ puts("Something went wrong. "); + if (retries > 1) { + fflush(stdout); + sleep(3); +@@ -826,8 +826,8 @@ int main(int argc, char **argv) + flushhw(); + printf("Please try again. (%d retries left)\n", retries - 1); + } else { +- printf("\n"); +- printf("Try using the -f option.\n"); ++ puts("\n"); ++ puts("Try using the -f option.\n"); + } + retries--; + continue; +@@ -1033,8 +1033,8 @@ int get_toggle_bit_mask(struct ir_remote *remote) + } + } + +- printf("Checking for toggle bit mask.\n"); +- printf("Please press an arbitrary button repeatedly as fast as possible.\n" ++ puts("Checking for toggle bit mask.\n"); ++ puts("Please press an arbitrary button repeatedly as fast as possible.\n" + "Make sure you keep pressing the SAME button and that you DON'T HOLD\n" "the button down!.\n" + "If you can't see any dots appear, then wait a bit between button presses.\n" "\n" + "Press RETURN to continue."); +@@ -1089,7 +1089,7 @@ int get_toggle_bit_mask(struct ir_remote *remote) + set_toggle_bit_mask(remote, first ^ decode_ctx.code); + found = 1; + } +- printf("."); ++ puts("."); + fflush(stdout); + retries--; + } else { +@@ -1101,12 +1101,12 @@ int get_toggle_bit_mask(struct ir_remote *remote) + } + } + if (!found) { +- printf("\nNo toggle bit mask found.\n"); ++ puts("\nNo toggle bit mask found.\n"); + } else { + if (remote->toggle_bit_mask > 0) { + printf("\nToggle bit mask is 0x%llx.\n", (__u64) remote->toggle_bit_mask); + } else if (remote->toggle_mask != 0) { +- printf("\nToggle mask found.\n"); ++ puts("\nToggle mask found.\n"); + } + } + if (seq > 0) +@@ -1533,12 +1533,12 @@ int get_lengths(struct ir_remote *remote, int force, int interactive) + int first_signal; + + if (interactive) { +- printf("Now start pressing buttons on your remote control.\n\n"); +- printf("It is very important that you press many different buttons and hold them\n" ++ puts("Now start pressing buttons on your remote control.\n\n"); ++ puts("It is very important that you press many different buttons and hold them\n" + "down for approximately one second. Each button should generate at least one\n" + "dot but in no case more than ten dots of output.\n" + "Don't stop pressing buttons until two lines of dots (2x80) have been\n" "generated.\n\n"); +- printf("Press RETURN now to start recording."); ++ puts("Press RETURN now to start recording."); + fflush(stdout); + getchar(); + flushhw(); +@@ -1647,7 +1647,7 @@ int get_lengths(struct ir_remote *remote, int force, int interactive) + + if (interactive) { + for (i = maxcount - lastmaxcount; i > 0; i--) { +- printf("."); ++ puts("."); + fflush(stdout); + } + } +@@ -1715,7 +1715,7 @@ int get_lengths(struct ir_remote *remote, int force, int interactive) + int i; + + if (interactive) { +- printf("."); ++ puts("."); + fflush(stdout); + } + count_signals++; +@@ -2130,7 +2130,7 @@ int get_repeat_length(struct ir_remote *remote, int interactive) + + if (!((count_3repeats > SAMPLES / 2 ? 1 : 0) ^ (count_5repeats > SAMPLES / 2 ? 1 : 0))) { + if (count_3repeats > SAMPLES / 2 || count_5repeats > SAMPLES / 2) { +- printf("Repeat inconsitentcy.\n"); ++ puts("Repeat inconsitentcy.\n"); + return (0); + } + i_printf(interactive, "No repeat code found.\n"); +@@ -2151,7 +2151,7 @@ int get_repeat_length(struct ir_remote *remote, int interactive) + } + if (max_count >= sum * TH_REPEAT / 100) { + if (count_5repeats > count_3repeats && !has_header(remote)) { +- printf("Repeat code has header," " but no header found!\n"); ++ puts("Repeat code has header," " but no header found!\n"); + return (0); + } + if (count_5repeats > count_3repeats && has_header(remote)) { +@@ -2199,7 +2199,7 @@ void unlink_length(struct lengths **first, struct lengths *remove) + scan = scan->next; + } + } +- printf("unlink_length(): report this bug!\n"); ++ puts("unlink_length(): report this bug!\n"); + } + + int get_data_length(struct ir_remote *remote, int interactive) +@@ -2224,12 +2224,12 @@ int get_data_length(struct ir_remote *remote, int interactive) + max2_plength = NULL; + } + if (lirc_log_is_enabled_for(LIRC_DEBUG)) { +- printf("Pulse canditates: "); ++ puts("Pulse canditates: "); + printf("%u x %u", max_plength->count, (__u32) calc_signal(max_plength)); + if (max2_plength) + printf(", %u x %u", max2_plength->count, (__u32) + calc_signal(max2_plength)); +- printf("\n"); ++ puts("\n"); + } + + max_slength = get_max_length(first_space, &sum); +@@ -2247,21 +2247,21 @@ int get_data_length(struct ir_remote *remote, int interactive) + } + if (lirc_log_is_enabled_for(LIRC_DEBUG)) { + if (max_count >= sum * TH_IS_BIT / 100) { +- printf("Space candidates: "); ++ puts("Space candidates: "); + printf("%u x %u", max_slength->count, + (__u32) calc_signal(max_slength)); + if (max2_slength) + printf(", %u x %u", + max2_slength->count, + (__u32) calc_signal(max2_slength)); +- printf("\n"); ++ puts("\n"); + } + } + remote->eps = eps; + remote->aeps = aeps; + if (is_biphase(remote)) { + if (max2_plength == NULL || max2_slength == NULL) { +- printf("Unknown encoding found.\n"); ++ puts("Unknown encoding found.\n"); + return (0); + } + i_printf(interactive, "Signals are biphase encoded.\n"); +@@ -2276,11 +2276,11 @@ int get_data_length(struct ir_remote *remote, int interactive) + remote->szero = remote->sone; + } else { + if (max2_plength == NULL && max2_slength == NULL) { +- printf("No encoding found.\n"); ++ puts("No encoding found.\n"); + return (0); + } + if (max2_plength && max2_slength) { +- printf("Unknown encoding found.\n"); ++ puts("Unknown encoding found.\n"); + return (0); + } + p1 = calc_signal(max_plength); +@@ -2348,7 +2348,7 @@ int get_data_length(struct ir_remote *remote, int interactive) + } + free_lengths(&max_plength); + } +- printf("Could not find data lengths.\n"); ++ puts("Could not find data lengths.\n"); + return (0); + } + +@@ -2366,7 +2366,7 @@ int get_gap_length(struct ir_remote *remote) + + flag = 0; + lastmaxcount = 0; +- printf("Hold down an arbitrary button.\n"); ++ puts("Hold down an arbitrary button.\n"); + while (1) { + while (availabledata()) { + curr_driver->rec_func(NULL); +@@ -2398,7 +2398,7 @@ int get_gap_length(struct ir_remote *remote) + } + if (maxcount > lastmaxcount) { + lastmaxcount = maxcount; +- printf("."); ++ puts("."); + fflush(stdout); + } + } else { +@@ -2411,9 +2411,10 @@ int get_gap_length(struct ir_remote *remote) + + void fprint_copyright(FILE * fout) + { +- fprintf(fout, "\n" ++ fputs("\n" + "# Please take the time to finish this file as described in\n" + "# https://sourceforge.net/p/lirc-remotes/wiki/Checklist/\n" + "# and make it available to others by sending it to \n" +- "# \n"); ++ "# \n", ++ fout); + } +diff --git a/tools/irsend.c b/tools/irsend.c +index 71cc95f..cfde7b9 100644 +--- a/tools/irsend.c ++++ b/tools/irsend.c +@@ -117,7 +117,7 @@ int main(int argc, char **argv) + break; + switch (c) { + case 'h': +- printf(help); ++ fputs(help, stdout); + return (EXIT_SUCCESS); + case 'v': + printf("%s %s\n", prog, VERSION); +diff --git a/tools/irsimreceive.c b/tools/irsimreceive.c +index 4a5a3b8..3c3d0bb 100644 +--- a/tools/irsimreceive.c ++++ b/tools/irsimreceive.c +@@ -43,25 +43,25 @@ static void setup(const char* path) + exit(EXIT_FAILURE); + } + if (hw_choose_driver("file") == -1) { +- fprintf(stderr, +- "Cannot load file driver (bad plugin path?)\n"); ++ fputs("Cannot load file driver (bad plugin path?)\n", ++ stderr); + exit(EXIT_FAILURE); + } + r = curr_driver->open_func("dummy.out"); + if (r == 0) { +- fprintf(stderr, "Cannot open driver\n"); ++ fputs("Cannot open driver\n", stderr); + exit(EXIT_FAILURE); + } + r = curr_driver->init_func(); + if (r == 0) { +- fprintf(stderr, "Cannot init driver\n"); ++ fputs("Cannot init driver\n", stderr); + exit(EXIT_FAILURE); + } + strcpy(option.key, "set-infile"); + strncpy(option.value, path, sizeof(option.value)); + r = curr_driver->drvctl_func(DRVCTL_SET_OPTION, (void*) &option); + if (r != 0) { +- fprintf(stderr, "Cannot set driver infile.\n"); ++ fputs("Cannot set driver infile.\n", stderr); + exit(EXIT_FAILURE); + } + } +@@ -102,7 +102,7 @@ void printcode(char* s) + int len; + + if (s == NULL) { +- printf( "None\n"); ++ puts("None\n"); + } else { + len = strlen(s); + if (strlen(s) > 2 && s[len -1] == '\n') { +@@ -140,23 +140,23 @@ int main(int argc, char *argv[]) + != EOF) { + switch (c) { + case 'h': +- printf(USAGE); +- return (EXIT_SUCCESS); ++ puts(USAGE); ++ return EXIT_SUCCESS; + case 'v': + printf("%s\n", "irw " VERSION); +- return (EXIT_SUCCESS); ++ return EXIT_SUCCESS; + case 'U': + options_set_opt("lircd:pluginpath", optarg); + break; + case '?': + fprintf(stderr, "unrecognized option: -%c\n", optopt); +- fprintf(stderr, +- "Try `irsimsend -h' for more information.\n"); +- return (EXIT_FAILURE); ++ fputs("Try `irsimsend -h' for more information.\n", ++ stderr); ++ return EXIT_FAILURE; + } + } + if (argc != optind + 2) { +- fprintf(stderr, USAGE); ++ fputs(USAGE, stderr); + return EXIT_FAILURE; + } + lirc_log_get_clientlog("irsimreceive", path, sizeof(path)); +diff --git a/tools/irsimsend.c b/tools/irsimsend.c +index b72831a..7572d84 100644 +--- a/tools/irsimsend.c ++++ b/tools/irsimsend.c +@@ -65,8 +65,8 @@ static struct ir_remote* setup(const char* path) + FILE* f; + + if (hw_choose_driver("file") == -1) { +- fprintf(stderr, +- "Cannot load file driver (bad plugin path?)\n"); ++ fputs("Cannot load file driver (bad plugin path?)\n", ++ stderr); + exit(EXIT_FAILURE); + } + unlink(OUTFILE); +@@ -196,7 +196,7 @@ int parse_uint_arg(const char* optind, const char* errmsg) + + c = strtol(optarg, NULL, 10); + if (c > INT_MAX || c < 0 || errno == EINVAL || errno == ERANGE) { +- fprintf(stderr, errmsg); ++ fputs(errmsg, stderr); + exit(EXIT_FAILURE); + } + return (int) c; +@@ -213,7 +213,7 @@ int main(int argc, char *argv[]) + != EOF) { + switch (c) { + case 'h': +- printf(USAGE); ++ puts(USAGE); + return (EXIT_SUCCESS); + case 'c': + opt_count = parse_uint_arg(optarg, +@@ -237,13 +237,13 @@ int main(int argc, char *argv[]) + break; + case '?': + fprintf(stderr, "unrecognized option: -%c\n", optopt); +- fprintf(stderr, +- "Try `irsimsend -h' for more information.\n"); ++ fputs("Try `irsimsend -h' for more information.\n", ++ stderr); + return (EXIT_FAILURE); + } + } + if (argc != optind + 1) { +- fprintf(stderr, USAGE); ++ fputs(USAGE, stderr); + return EXIT_FAILURE; + } + lirc_log_get_clientlog("irsimsend", path, sizeof(path)); +diff --git a/tools/irtestcase.c b/tools/irtestcase.c +index 95d59b7..149c1ad 100644 +--- a/tools/irtestcase.c ++++ b/tools/irtestcase.c +@@ -92,7 +92,7 @@ static void set_testinput(int fd, const char* path) + lirc_command_init(&command, "DRV_OPTION set-infile %s\n", path); + r = lirc_command_run(&command, fd); + if (r != 0) { +- fprintf(stderr, "Cannot set test input file\n"); ++ fputs("Cannot set test input file\n", stderr); + exit(2); + } + } +@@ -137,7 +137,7 @@ static int nextcode(int fd, char* buff, ssize_t size) + exit(errno); + }; + if (strstr(buff, "__EOF") != NULL) { +- printf("Exit on EOF\n"); ++ puts("Exit on EOF\n"); + exit(0); + } + if (i >= 0) { +@@ -176,16 +176,16 @@ static int irtestcase(int fd_io, int fd_cmd) + + if (opt_lircrc != NULL) { + if (lirc_readconfig_only(opt_lircrc, &config, NULL) != 0) { +- fprintf(stderr, "Cannot initiate lircrc decoding\n"); ++ fputs("Cannot initiate lircrc decoding\n", stderr); + exit(2); + } + } + while (nextcode(fd_io, code, sizeof(code)) == 1) { +- printf(code); ++ puts(code); + if (strstr(code, "__EOF") != NULL) { + exit(0); + } +- fprintf(code_log, code); ++ fputs(code, code_log); + if (opt_lircrc != NULL){ + r = lirc_code2char(config, code, &c); + while (r == 0 && c != NULL) { +@@ -222,36 +222,35 @@ int main(int argc, char *argv[]) + opt_testdata = optarg; + break; + case 'h': +- printf(USAGE); ++ puts(USAGE); + return (EXIT_SUCCESS); + case 'v': + printf("%s\n", "irtestcase " VERSION); + return (EXIT_SUCCESS); + case '?': + fprintf(stderr, "unrecognized option: -%c\n", optopt); +- fprintf(stderr, "Try `irtestcase --help'.\n"); ++ fputs("Try `irtestcase --help'.\n", stderr); + return (EXIT_FAILURE); + } + } + if (argc > optind + 1) { +- fprintf(stderr, +- "irtestcase: Too many arguments (max one).\n"); +- fprintf(stderr, "Try `irtestcase --help'.\n"); ++ fputs("irtestcase: Too many arguments (max one).\n", stderr); ++ fputs("Try `irtestcase --help'.\n", stderr); + return (EXIT_FAILURE); + } + if (strcmp(opt_prog, DEFAULT_PROG) != 0 && opt_lircrc == NULL) { +- fprintf(stderr, "--prog requires --lircrc/-l. Giving up.\n"); ++ fputs("--prog requires --lircrc/-l. Giving up.\n", stderr); + return (EXIT_FAILURE); + } + if (opt_lircrc != NULL && strcmp(opt_prog, DEFAULT_PROG) == 0) { +- fprintf(stderr, "--lircrc requires --prog/-p. Giving up.\n"); ++ fputs("--lircrc requires --prog/-p. Giving up.\n", stderr); + return (EXIT_FAILURE); + } + + init_testdir(); + fd_cmd = lirc_get_local_socket(NULL, 1); + if (fd_cmd < 0) { +- fprintf(stderr, "Cannot open lircd socket.\n"); ++ fputs("Cannot open lircd socket.\n", stderr); + exit(3); + } + set_devicelog(fd_cmd, DEVICE_LOG); +@@ -267,7 +266,7 @@ int main(int argc, char *argv[]) + setenv("LIRC_SOCKET_PATH", socketpath, 0); + fd_io = lirc_init(opt_prog, 1); + if (fd_io < 0) { +- fprintf(stderr, "Cannot run lirc_init.\n"); ++ fputs("Cannot run lirc_init.\n", stderr); + exit(3); + } + +diff --git a/tools/lirc-lsplugins.c b/tools/lirc-lsplugins.c +index 10403a7..4b723c9 100644 +--- a/tools/lirc-lsplugins.c ++++ b/tools/lirc-lsplugins.c +@@ -111,7 +111,7 @@ static void lines_next(line_t* line) + { + lines[line_ix++] = line; + if (line_ix >= MAX_PLUGINS -1){ +- fprintf(stderr, "Too many plugins, giving up. Sorry."); ++ fputs("Too many plugins, giving up. Sorry.", stderr); + exit(2); + } + } +@@ -152,7 +152,7 @@ static void line_print(const line_t* line) + printf("%-20s%-6s%s\n", + line->name, line->flags, line->path); + if (line->errors) +- printf(line->errors); ++ puts(line->errors); + } + + static void print_folded_item(const char* arg) +@@ -163,7 +163,7 @@ static void print_folded_item(const char* arg) + char* token; + + if (arg == NULL) { +- printf("None\n"); ++ puts("None\n"); + return; + } + buff = alloca(strlen(arg) + 1); +@@ -171,18 +171,18 @@ static void print_folded_item(const char* arg) + token = strtok(buff, " \t"); + while (token != NULL) { + if (strlen(token) + pos > 80) { +- printf("\n\t\t"); ++ puts("\n\t\t"); + pos = 0; + } + if (pos != START_POS && pos != 0){ +- printf(" "); ++ puts(" "); + pos += 1; + } +- printf(token); ++ puts(token); + pos += strlen(token); + token = strtok(NULL, " \t"); + } +- printf("\n"); ++ puts("\n"); + } + + +@@ -220,7 +220,7 @@ static void line_print_long(const line_t* line) + printf("Version:\t%s\n", line->version ? line->version : "(None)"); + printf("Driver info:\t"); + print_folded_item(line->info); +- printf("\n"); ++ puts("\n"); + } + + +@@ -356,13 +356,13 @@ void lsplugins(const char* pluginpath, const char* which) + } + } + if (!opt_quiet) { +- printf("#\n#\n"); ++ puts("#\n#\n"); + if (!opt_long) { +- printf(LEGEND); +- printf("#\n"); ++ puts(LEGEND); ++ puts("#\n"); + } + if (opt_long) +- printf(LONG_LEGEND); ++ puts(LONG_LEGEND); + } + } + +@@ -383,10 +383,10 @@ int main(int argc, char** argv) + pluginpath = optarg; + break; + case 'h': +- printf(USAGE); ++ puts(USAGE); + exit(0); + case 'v': +- printf("Version: " VERSION "\n"); ++ puts("Version: " VERSION "\n"); + exit(0); + case 'p': + printf("Default path: %s\n", pluginpath); +@@ -404,13 +404,13 @@ int main(int argc, char** argv) + opt_long = 1; + break; + default: +- fprintf(stderr, USAGE); ++ fputs(USAGE, stderr); + exit(1); + } + } + if (argc - optind > 1) { +- fprintf(stderr, "Too many arguments.\n"); +- fprintf(stderr, USAGE); ++ fputs("Too many arguments.\n", stderr); ++ fputs(USAGE, stderr); + exit(2); + } + which = (argc - optind == 1 ? argv[argc - 1] : "*"); +diff --git a/tools/lirc-lsremotes.c b/tools/lirc-lsremotes.c +index 2ac7dad..11e806a 100644 +--- a/tools/lirc-lsremotes.c ++++ b/tools/lirc-lsremotes.c +@@ -258,16 +258,16 @@ int main(int argc, char** argv) + opt_silent = 1; + break; + case 'h': +- printf(USAGE); +- return (EXIT_SUCCESS); ++ puts(USAGE); ++ return EXIT_SUCCESS; + case 'v': + printf("%s\n", "lirc-lsremotes " VERSION); +- return (EXIT_SUCCESS); ++ return EXIT_SUCCESS; + case '?': + fprintf(stderr, "unrecognized option: -%c\n", optopt); +- fprintf(stderr, +- "Try `lirc-lsremotes -h' for more information.\n"); +- return (EXIT_FAILURE); ++ fputs("Try `lirc-lsremotes -h' for more information.\n", ++ stderr); ++ return EXIT_FAILURE; + } + } + if (argc == optind + 2) { +@@ -277,7 +277,7 @@ int main(int argc, char** argv) + dirpath = argv[optind]; + configs = "*"; + } else { +- fprintf(stderr, USAGE); ++ fputs(USAGE, stderr); + return EXIT_FAILURE; + } + lirc_log_get_clientlog("lirc-lsremotes", path, sizeof(path)); +diff --git a/tools/mode2.c b/tools/mode2.c +index c055a5e..7ed80c9 100644 +--- a/tools/mode2.c ++++ b/tools/mode2.c +@@ -95,12 +95,14 @@ static void parse_options(int argc, char** argv) + { + switch (c) { + case 'h': +- printf(help); ++ puts(help); + exit(EXIT_SUCCESS); + case 'H': + if (hw_choose_driver(optarg) != 0) { +- fprintf(stderr, "Driver `%s' not found.\n", optarg); +- fprintf(stderr, "Available drivers:\n"); ++ fprintf(stderr, ++ "Driver `%s' not found.\n", ++ optarg); ++ fputs("Available drivers:\n", stderr); + hw_print_drivers(stderr); + exit(EXIT_FAILURE); + } +@@ -189,11 +191,11 @@ int main(int argc, char **argv) + close(fd); + exit(EXIT_FAILURE); + } else if (ioctl(fd, LIRC_GET_REC_MODE, &mode) == -1) { +- printf("This program is only intended for receivers" ++ puts("This program is only intended for receivers" + " supporting the pulse/space layer.\n"); +- printf("Note that this is no error, but this program " ++ puts("Note that this is no error, but this program " + "simply makes no sense for your\n" "receiver.\n"); +- printf("In order to test your setup run lircd with " ++ puts("In order to test your setup run lircd with " + "the --nodaemon option and \n then check if the" + " remote works with the irw tool.\n"); + close(fd); +@@ -208,11 +210,11 @@ int main(int argc, char **argv) + mode = curr_driver->rec_mode; + if (mode != LIRC_MODE_MODE2) { + if (strcmp(curr_driver->name, "default") == 0) { +- printf("Please use the --raw option to access " ++ puts("Please use the --raw option to access " + "the device directly instead through\n" + "the abstraction layer.\n"); + } else { +- printf("This program does not work for this" ++ puts("This program does not work for this" + " hardware yet\n"); + } + exit(EXIT_FAILURE); +@@ -251,15 +253,15 @@ int main(int argc, char **argv) + (void *)&data : buffer), + count); + if (result != count) { +- fprintf(stderr, "read() failed\n"); ++ fputs("read() failed\n", stderr); + break; + } + } else { + if (mode == LIRC_MODE_MODE2) { + data = curr_driver->readdata(0); + if (data == 0) { +- fprintf(stderr, +- "readdata() failed\n"); ++ fputs("readdata() failed\n", ++ stderr); + break; + } + } else { +@@ -268,11 +270,11 @@ int main(int argc, char **argv) + } + + if (mode != LIRC_MODE_MODE2) { +- printf("code: 0x"); ++ puts("code: 0x"); + for (i = 0; i < count; i++) { + printf("%02x", (unsigned char)buffer[i]); + } +- printf("\n"); ++ puts("\n"); + fflush(stdout); + continue; + } +@@ -292,19 +294,19 @@ int main(int argc, char **argv) + if (data & PULSE_BIT) { + if ((bitno & 1) == 0) { + /* not in expected order */ +- printf("-pulse"); ++ puts("-pulse"); + } + } else { + if (bitno & 1) { + /* not in expected order */ +- printf("-space"); ++ puts("-space"); + } + if (((data & PULSE_MASK) > gap) || (bitno >= 6)) { + /* real long space or more + than 6 codes, start new line */ +- printf("\n"); ++ puts("\n"); + if ((data & PULSE_MASK) > gap) +- printf("\n"); ++ puts("\n"); + bitno = 0; + } + } +@@ -312,7 +314,7 @@ int main(int argc, char **argv) + } + case 2: + if ((data & PULSE_MASK) > gap) +- printf("_\n\n_"); ++ puts("_\n\n_"); + else + printf("%.*s", + ((data & PULSE_MASK) + t_div/2) / t_div, +diff --git a/tools/xmode2.c b/tools/xmode2.c +index 6a45d4c..9a4e0a1 100644 +--- a/tools/xmode2.c ++++ b/tools/xmode2.c +@@ -139,12 +139,13 @@ static void parse_options(int argc, char** const argv) + add_defaults(); + while ((c = getopt_long(argc, argv, "U:hvd:H:g:t:mr", options, NULL)) != -1) { + switch (c) { +- case 'h':printf(help); ++ case 'h':puts(help); + exit (EXIT_SUCCESS); + case 'H': + if (hw_choose_driver(optarg) != 0) { + fprintf(stderr, "Driver `%s' not found", optarg); +- fprintf(stderr, " (wrong or missing -U/--plugindir?)\n"); ++ fputs(" (wrong or missing -U/--plugindir?)\n", ++ stderr); + hw_print_drivers(stderr); + exit(EXIT_FAILURE); + } +@@ -186,7 +187,7 @@ void initscreen(char *geometry) + { + d1 = XOpenDisplay(0); + if (d1 == NULL) { +- printf("Can't open display.\n"); ++ puts("Can't open display.\n"); + exit(0); + } + +@@ -208,10 +209,10 @@ void initscreen(char *geometry) + + cm1 = DefaultColormap(d1, 0); + if (!XAllocNamedColor(d1, cm1, "blue", &xc1, &xc2)) +- printf("coudn't allocate blue color\n"); ++ puts("couldn't allocate blue color\n"); + f1_str = XLoadQueryFont(d1, font1_name); + if (f1_str == NULL) { +- printf("could't load font\n"); ++ puts("could't load font\n"); + exit(EXIT_FAILURE); + } + +@@ -266,10 +267,10 @@ int main(int argc, char **argv) + close(fd); + exit(EXIT_FAILURE); + } else if (ioctl(fd, LIRC_GET_REC_MODE, &mode) == -1) { +- printf("This program is only intended for receivers supporting the pulse/space layer.\n"); +- printf("Note that this is no error, but this program " ++ puts("This program is only intended for receivers supporting the pulse/space layer.\n"); ++ puts("Note that this is no error, but this program " + "simply makes no sense for your\n" "receiver.\n"); +- printf("In order to test your setup run lircd with " ++ puts("In order to test your setup run lircd with " + "the --nodaemon option and \n" "then check if the remote works with the irw tool.\n"); + close(fd); + exit(EXIT_FAILURE); +@@ -277,7 +278,7 @@ int main(int argc, char **argv) + } else { + curr_driver->open_func(device); + if (curr_driver->init_func && !curr_driver->init_func()) { +- fprintf(stderr, "Cannot initialize hardware"); ++ fputs("Cannot initialize hardware", stderr); + exit(EXIT_FAILURE); + } + +@@ -285,10 +286,10 @@ int main(int argc, char **argv) + mode = curr_driver->rec_mode; + if (mode != LIRC_MODE_MODE2) { + if (strcmp(curr_driver->name, "default") == 0) { +- printf("Please use the --raw option to access " ++ puts("Please use the --raw option to access " + "the device directly instead through\n" "the abstraction layer.\n"); + } else { +- printf("This program does not work for this hardware yet\n"); ++ puts("This program does not work for this hardware yet\n"); + } + exit(EXIT_FAILURE); + } +-- +1.9.3 + diff --git a/0004-all-Sanitize-feature-tests-macros.patch b/0004-all-Sanitize-feature-tests-macros.patch new file mode 100644 index 0000000..5e1376d --- /dev/null +++ b/0004-all-Sanitize-feature-tests-macros.patch @@ -0,0 +1,87 @@ +From 18933e88521431abea8f0bf720cf35cc37d2def4 Mon Sep 17 00:00:00 2001 +From: Alec Leamas +Date: Thu, 11 Dec 2014 11:03:12 +0100 +Subject: [PATCH 4/5] all: Sanitize feature tests macros. + +--- + daemons/lircd.c | 3 --- + lib/lirc_client.c | 6 +----- + plugins/srm7500libusb.c | 1 + + tools/lirc-lsplugins.c | 0 + tools/lirc-lsremotes.c | 4 ---- + 5 files changed, 2 insertions(+), 12 deletions(-) + +diff --git a/daemons/lircd.c b/daemons/lircd.c +index ab44e80..d1bdc7c 100644 +--- a/daemons/lircd.c ++++ b/daemons/lircd.c +@@ -31,9 +31,6 @@ + # include + #endif + +-#define _GNU_SOURCE +-#define _BSD_SOURCE +- + #include + #include + #include +diff --git a/lib/lirc_client.c b/lib/lirc_client.c +index 4720f3f..b161f0e 100644 +--- a/lib/lirc_client.c ++++ b/lib/lirc_client.c +@@ -17,11 +17,6 @@ + * @author Christoph Bartelmus, Trent Piepho, Michal Svec + */ + +-// define _XOPEN_SOURCE for WEXITSTATUS +-#define _XOPEN_SOURCE +-// define _BSD_SOURCE for strdup() +-#define _BSD_SOURCE +- + #ifdef HAVE_CONFIG_H + # include + #endif +@@ -34,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + #include +diff --git a/plugins/srm7500libusb.c b/plugins/srm7500libusb.c +index f598f4d..06206bc 100644 +--- a/plugins/srm7500libusb.c ++++ b/plugins/srm7500libusb.c +@@ -33,6 +33,7 @@ + #endif + + #define _GNU_SOURCE ++ + #include + #include + #include +diff --git a/tools/lirc-lsremotes.c b/tools/lirc-lsremotes.c +index 11e806a..7c6ab06 100644 +--- a/tools/lirc-lsremotes.c ++++ b/tools/lirc-lsremotes.c +@@ -7,16 +7,12 @@ + * + */ + +-#define _GNU_SOURCE +- + #include + + #include + #include + #include + #include +- +- + #include + #include + #include +-- +1.9.3 + diff --git a/0004-lircd-fix-compiler-error-format-security-error.patch b/0004-lircd-fix-compiler-error-format-security-error.patch deleted file mode 100644 index ebb36d1..0000000 --- a/0004-lircd-fix-compiler-error-format-security-error.patch +++ /dev/null @@ -1,25 +0,0 @@ -From d80c94ead949e16053449ddf215a88a5e5e159e3 Mon Sep 17 00:00:00 2001 -From: Alec Leamas -Date: Tue, 19 Aug 2014 19:21:25 +0200 -Subject: [PATCH 4/4] lircd: fix compiler error=format-security error. - ---- - daemons/lircd.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/daemons/lircd.c b/daemons/lircd.c -index 7af4265..50fd9c6 100644 ---- a/daemons/lircd.c -+++ b/daemons/lircd.c -@@ -2303,7 +2303,7 @@ int main(int argc, char **argv) - opt = options_getstring("lircd:listen_hostport"); - if (opt){ - if (opt2host_port(opt, &address, &port, errmsg) != 0){ -- fprintf(stderr, errmsg); -+ printf(stderr, errmsg); - return(EXIT_FAILURE); - } - } else --- -1.8.4.2 - diff --git a/0005-configure.ac-Use-pkg-config-to-locate-ftdi.patch b/0005-configure.ac-Use-pkg-config-to-locate-ftdi.patch new file mode 100644 index 0000000..f94dc91 --- /dev/null +++ b/0005-configure.ac-Use-pkg-config-to-locate-ftdi.patch @@ -0,0 +1,53 @@ +From 192e627fa81c3e8df086801dea228cb2fdcbb8bb Mon Sep 17 00:00:00 2001 +From: Alec Leamas +Date: Thu, 11 Dec 2014 11:24:27 +0100 +Subject: [PATCH] configure.ac: Use pkg-config to locate ftdi. + +This picks up changed locations e. g., in fedora-22. +--- + configure.ac | 13 ++++++++++--- + plugins/Makefile.am | 2 +- + 2 files changed, 11 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index aaba636..b32b1e0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -183,11 +183,18 @@ AC_CHECK_HEADER(usb.h,[ + ],[ + AM_CONDITIONAL([BUILD_USB],[false])] + ) +-AC_CHECK_HEADER(ftdi.h,[ ++PKG_CHECK_MODULES([FTDI],[libftdi],,[true]) ++test -z "$FTDI_LIBS" && PKG_CHECK_MODULES([FTDI], [libftdi1],,[true]) ++ ++if test -n "$FTDI_LIBS"; then ++ CFLAGS="$CFLAGS $SYSTEMD_CFLAGS" ++ LDFLAGS="$LDFLAGS $FTDI_LIBS" ++ AC_DEFINE(HAVE_FTDI) + AM_CONDITIONAL([BUILD_FTDI],[true]) +- ],[ ++ AC_SUBST(FTDI_LIBS) ++else + AM_CONDITIONAL([BUILD_FTDI],[false])] +-) ++fi + AC_CHECK_HEADER(iguanaIR.h,[ + AM_CONDITIONAL([BUILD_IGUANAIR],[true]) + ],[ +diff --git a/plugins/Makefile.am b/plugins/Makefile.am +index 175b025..07cf187 100644 +--- a/plugins/Makefile.am ++++ b/plugins/Makefile.am +@@ -47,7 +47,7 @@ endif + if BUILD_FTDI + plugin_LTLIBRARIES += ftdi.la + ftdi_la_SOURCES = ftdi.c +-ftdi_la_LDFLAGS = $(AM_LDFLAGS) -lftdi ++ftdi_la_LDFLAGS = $(AM_LDFLAGS) @FTDI_LIBS@ + endif + + if BUILD_IGUANAIR +-- +1.9.3 + diff --git a/README.fedora b/README.fedora index 2cda73a..b1a629f 100644 --- a/README.fedora +++ b/README.fedora @@ -1,12 +1,75 @@ ## Fedora README -### Upstream release 0.9.1a +0.9.2 -The changes that broke the update for 0.9.0 are now in upstream. There -are no functional fedora-specific patches in this release, just some -bugfixes. +This a major upstream update. Don't expect things to be the same, read +the NEWS file in the documentation (/usr/share/doc/lirc/NEWS). +Packaging-wise, the package has been split into smaller packages. Installing +the 'lirc' package will bring all of them. You might be interested in +not installing or removing e. g., unused drivers, the gui and/or the +config package. +The lircd daemon now runs as user lirc. This is using the new +--effective-user option, so it's still started as root and runs as root +until all devices and files are opened. Should this become a problem, just +change the effective-user option in lirc_options.conf. + + + +0.9.1 + +#### Systemd + +The fedora lirc package supports two systemd services lircd.socket +and lircmd.service. See below for enabling and starting these +services. + +Since systemd quite aggressively runs things in parallel during startup, +clients like irexec sometimes runs into troubles because the socket +they want to connect to isn't available. This can cause hard to debug +problems. From this version, lircd supports a --wait-for-socket option. +Using this, the calling party is blocked until the socket is available. + +#### New configuration file(s) + +From this version lirc supports a new configuration file +/etc/lirc/lirc_options.conf. This holds default values for all +command line options, and does in fact replace those in most +installations. When updating, you need to use your old +/etc/sysconfig/lirc config file to update lirc_options.conf. + +The old file /etc/sysconfig/lirc is no longer used. + +The need to define a device that should be reserved (the old +LIRC_IR_DEVICE option) is no longer needed - lircd is clever enough +to do this by itself. + +#### Enable lirc protocol (obsolete) + +In previous version the lirc protocol had to be be enabled +for the actual device used. This was done using either by installing the +lirc-disable-kernel-rc subpackage or by setting the LIRCD_IR_DEVICE in +/etc/sysconfig/lirc. This is no longer needed, lircd does this +automatically. The lirc-disable-kernel-rc subpackage is still available +"just in case" but should normally not be needed. + +#### Socket activation + +As of 0.9.4-15+, the Fedora lirc package sports systemd socket +activation. This should fix the problems at startup when clients can't +connect to /var/run/lircd because the lircd service is yet not started. + +To start the lircd service using socket activation: +``` + # systemctl enable lircd.socket + # systemctl start lircd.socket +``` +The lircmd is started the usual way: +``` + # systemctl enable lircmd.service + # systemctl start lircmd.service +``` #### Running another instance. Sometimes another lircd instance is required to handle some other input @@ -52,11 +115,13 @@ If lircd fails to start or dies after restart, first check logs for errors: # systemctl restart lircd.service ``` -You could also run lircd in foreground after stopping service, using the -driver and device defined in lirc_options.conf: +You could also run lircd in foreground after stopping service: ``` # systemctl stop lircd.service - # /usr/sbin/lircd --nodaemon + # bash + # source /etc/systconfig/lirc + # /usr/sbin/lircd $LIRCD_OPTIONS --driver $LIRC_DRIVER \ + > --device $LIRC_DEVICE --nodaemon ``` Sometimes kernel complains about multiple clients trying to access the @@ -66,7 +131,7 @@ remote using the atilibusb driver. This needs to blacklist the built_in ati_remote module. This is is done by creating the file /etc/modprobe.conf.d/blacklist-ati-remote.conf as: ``` -## Block built-in handling of ati-remote (use lircd instead). +# Block built-in handling of ati-remote (use lircd instead). blacklist ati_remote ``` diff --git a/TODO b/TODO deleted file mode 100644 index 0afd93f..0000000 --- a/TODO +++ /dev/null @@ -1,7 +0,0 @@ - - Move to -devel (?): irw, *mode2, others? - note: xmode2 inflicts a dependency on X, and smode2 on svgalib - - does someone actually need xmode2/smode2 for something? - - Split utils into subpackage (keep daemons in main package), perhaps also - having the irw, *mode2 etc. - - Don't run as root and/or create dedicated group, reduce fifo permissions? - http://stackoverflow.com/questions/11939255/writing-to-dev-uinput-on-ubuntu-12-04 diff --git a/lirc.init b/lirc.init deleted file mode 100755 index 6c918c9..0000000 --- a/lirc.init +++ /dev/null @@ -1,134 +0,0 @@ -#!/bin/sh -# -# lirc Startup script for the Linux Infrared Remote Control daemons -# -# chkconfig: - 29 71 -# description: Enables infrared controls through LIRC. -# processname: lircd -# processname: lircmd -# config: /etc/lirc/lircd.conf -# config: /etc/lirc/lircmd.conf -# pidfile: /var/run/lirc/lircd.pid - -### BEGIN INIT INFO -# Provides: lirc -# Should-Start: $syslog $network -# Should-Stop: $syslog $network -# Short-Description: Linux Infrared Remote Control daemon -# Description: Enables remote control devices through LIRC. -### END INIT INFO - -# Source function library. -. /etc/init.d/functions - -exec="/usr/sbin/lircd" -exec2="/usr/sbin/lircmd" -prog=$(basename $exec) -prog2=$(basename $exec2) - -[ -e /etc/sysconfig/lirc ] && . /etc/sysconfig/lirc - -lockfile=/var/lock/subsys/lirc - -# Default to first lirc character device and the lirc chardev driver -LIRC_DEVICE=${LIRC_DEVICE:-/dev/lirc0} -LIRC_DRIVER=${LIRC_DRIVER:-default} - -start() { - echo -n $"Starting infrared remote control daemon ($prog): " - daemon $exec --driver=$LIRC_DRIVER --device=$LIRC_DEVICE $LIRCD_OPTIONS - retval=$? - echo - status $prog >/dev/null 2>&1 - if [ $? -eq 0 -a "$ENABLE_LIRCMD" = "yes" ] ; then - echo -n $"Starting infrared remote control mouse daemon ($prog2): " - daemon $exec2 $LIRCMD_OPTIONS - retval=$? - echo - fi - [ $retval -eq 0 ] && touch $lockfile - - # To prevent double key events w/both in-kernel and lirc decode, - # we disable the in-kernel decoding when lircd is started up - # successfully with a raw IR rc-core receiver - if [ $retval -eq 0 ]; then - if [ $(echo "$LIRC_DRIVER" | grep -c "default") -ge 1 ]; then - lircdev=$(basename $LIRC_DEVICE) - rcdev=$(find -L /sys/class/rc/ -maxdepth 2 -name $lircdev 2> /dev/null) - if [ ! -z ${rcdev} ]; then - (echo lirc > ${rcdev}/../protocols) 2> /dev/null - fi - fi - fi - - return $retval -} - -stop() { - retval=0 - if status $prog2 >/dev/null 2>&1 ; then - echo -n $"Stopping infrared remote control mouse daemon ($prog2): " - killproc $prog2 - retval=$? - echo - fi - if [ $retval -eq 0 ] ; then - echo -n $"Stopping infrared remote control daemon ($prog): " - killproc $prog - retval=$? - echo - fi - [ $retval -eq 0 ] && rm -f $lockfile - - # On lircd shutdown, turn all the in-kernel IR decoders back on - lircdev=$(basename $LIRC_DEVICE) - rcdev=$(find -L /sys/class/rc/ -maxdepth 2 -name $lircdev 2> /dev/null) - if [ ! -z ${rcdev} ]; then - protonode=${rcdev}/../protocols - echo none > ${protonode} - protos=$(cat ${protonode}) - for p in $protos - do - (echo "+${p}" > ${protonode}) 2> /dev/null - done - fi - - return $retval -} - -restart() { - stop - start -} - -reload() { - # lircmd doesn't apparently respond to HUP, so if it's running, restart. - if status $prog2 >/dev/null 2>&1 ; then - restart - else - echo -n $"Reloading infrared remote control daemon ($prog): " - killproc $prog -HUP - retval=$? - echo - return $retval - fi -} - -case "$1" in - start|stop|restart|reload) - $1 - ;; - force-reload) - reload || restart - ;; - status) - status $prog2 - status $prog - ;; - try-restart|condrestart) - [ ! -f $lockfile ] || restart - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}" - exit 2 -esac diff --git a/lirc.spec b/lirc.spec index 314dcd9..a1c2042 100644 --- a/lirc.spec +++ b/lirc.spec @@ -1,86 +1,64 @@ -# -# rpmlint warnings: -# only-non-binary-in-usr-lib: -# https://bugzilla.redhat.com/show_bug.cgi?id=794777 -# incorrect-fsf-address : -# https://sf.net/mailarchive/forum.php?forum_name=lirc-list&viewmonth=201310 -# - -%bcond_without alsa -%bcond_without portaudio -%bcond_without x -%bcond_with svgalib -%bcond_without irman -%bcond_without ftdi -%bcond_without iguanaIR +%global commit 228db97ccb454932a69deb6685b15e9fca9c6967 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) %global _hardened_build 1 %global released 1 -%define pre pre1 +#define pre pre3 Name: lirc -Version: 0.9.1a +Version: 0.9.2 +%global src_vers %(echo %{version} | sed 's/_/-/g' ) %if 0%{?released} -Release: 4%{?dist} +Release: 1%{?dist} %else -Release: 0.10.%{pre}%{?dist} +Release: 1 %endif + Summary: The Linux Infrared Remote Control package Group: System Environment/Daemons - # Some LGPLv2 files in iguanaIR promoted to GPLv2 -License: GPLv2 + # lib/ciniparser* and lib/dictionary* are BSD, others GPLv2 +License: GPLv2 and BSD URL: http://www.lirc.org/ %if 0%{?released} -Source0: http://downloads.sourceforge.net/lirc/%{name}-%{version}.tar.bz2 +Source0: http://downloads.sourceforge.net/lirc/%{name}-%{src_vers}.tar.gz %else -Source0: http://www.lirc.org/software/snapshots/%{name}-%{version}-%{pre}.tar.bz2 +Source0: http://leamas.fedorapeople.org/lirc/lirc-%{src_vers}.tar.gz %endif +Source6: README.fedora +Source7: 99-remote-control-lirc.rules + # Config only, cannot be upstreamed. +Patch1: 0001-Changing-effective-user-default.patch + # Already upstream (0002..0006). +Patch2: 0002-tools-Make-make_rel_symlink.py-use-python3.patch +Patch3: 0003-all-Use-puts-instead-of-printf-when-applicable.patch +Patch4: 0004-all-Sanitize-feature-tests-macros.patch +Patch5: 0005-configure.ac-Use-pkg-config-to-locate-ftdi.patch +Patch6: 0006-Add-Doxyfile-not-part-of-dist-tarball.patch -Source1: README.fedora -Source2: 99-remote-control-lirc.rules - - # Patches 1-3 are from upstream -Patch1: 0001-Fix-segfault-when-starting-lircd-AUR-41581.patch -Patch2: 0002-lircd-Fix-bad-default-for-lircdfile.patch -Patch3: 0003-0.9.1a-Bugfix-segfault-when-parsing-connect-in-confi.patch -Patch4: 0004-lircd-fix-compiler-error-format-security-error.patch - - +BuildRequires: alsa-lib-devel Buildrequires: autoconf BuildRequires: automake - -%if %{with alsa} -BuildRequires: alsa-lib-devel -%endif -%if %{with iguanaIR} +BuildRequires: doxygen BuildRequires: iguanaIR-devel -%endif -BuildRequires: help2man -%if %{with ftdi} +BuildRequires: kernel-headers +BuildRequires: man2html BuildRequires: libftdi-devel -%endif -%if %{with irman} BuildRequires: libirman-devel -%endif BuildRequires: libtool BuildRequires: libusb-devel BuildRequires: libusb1-devel -%if %{with x} BuildRequires: libXt-devel -%endif -%if %{with portaudio} -BuildRequires: portaudio-devel >= 19 -%endif -BuildRequires: python2-devel -%if %{with svgalib} -BuildRequires: svgalib-devel -%endif +BuildRequires: portaudio-devel +BuildRequires: python3-devel +BuildRequires: python3-PyYAML BuildRequires: systemd-devel -Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} +Requires: python3-PyYAML +Requires(pre): shadow-utils Requires(post): systemd #for triggerun Requires(post): systemd-sysv @@ -94,9 +72,39 @@ Included applications include daemons which decode the received signals as well as user space applications which allow controlling a computer with a remote control. +Installing this package will install most of the LIRC sub-packages. +You might want to install lirc-core, possibly adding some other +packages to get a smaller installation. + + +%package core +Summary: LIRC core, always needed to run LIRC + +%description core +The LIRC core contains the lircd daemons, the devinput and +default driver and most of the applications. + + +%package compat +Summary: Compatibility package installing all lirc packages +Obsoletes: lirc <= 0.9.1 +Provides: lirc = %{version}-%{release} +Requires: lirc-core%{?_isa} = %{version}-%{release} +Requires: lirc-config = %{version}-%{release} +Requires: lirc-tools-gui%{?_isa} = %{version}-%{release} +Requires: lirc-drv-iguanaIR%{?_isa} = %{version}-%{release} +Requires: lirc-drv-portaudio%{?_isa} = %{version}-%{release} +Requires: lirc-drv-irman%{?_isa} = %{version}-%{release} +Requires: lirc-drv-ftdi%{?_isa} = %{version}-%{release} + +%description compat +Installing this package will install most lirc sub-packages, roughly +the same as installing previous versions of the lirc package. + %package libs Summary: LIRC libraries Group: System Environment/Libraries +Requires: lirc-core%{?_isa} = %{version}-%{release} %description libs LIRC is a package that allows you to decode and send infra-red and @@ -106,10 +114,21 @@ signals as well as user space applications which allow controlling a computer with a remote control. This package includes shared libraries that applications use to interface with LIRC. + +%package config +Summary: LIRC Configuration Tools and Data +Requires: lirc-core = %{version}-%{release} +BuildArch: noarch + +%description config +The LIRC config package contains tools and data to ease the +LIRC configuration process. + + %package devel Summary: Development files for LIRC Group: Development/Libraries -Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: lirc-libs%{?_isa} = %{version}-%{release} %description devel LIRC is a package that allows you to decode and send infra-red and @@ -119,9 +138,11 @@ signals as well as user space applications which allow controlling a computer with a remote control. This package includes files for developing applications that use LIRC. + %package doc Summary: LIRC documentation Group: Documentation +BuildArch: noarch %description doc LIRC is a package that allows you to decode and send infra-red and @@ -131,26 +152,61 @@ signals as well as user space applications which allow controlling a computer with a remote control. This package contains LIRC documentation. -%package remotes -Summary: LIRC remote definitions -Group: System Environment/Daemons - -%description remotes -LIRC is a package that allows you to decode and send infra-red and -other signals of many (but not all) commonly used remote controls. -Included applications include daemons which decode the received -signals as well as user space applications which allow controlling a -computer with a remote control. This package contains a collection -of remote control configuration files. %package disable-kernel-rc Summary: Disable kernel ir device handling in favor of lirc -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name} = %{version}-%{release} +BuildArch: noarch %description disable-kernel-rc Udev rule which disables the kernel built-in handling of infrared devices -(i. e., rc* ones) by making lirc the only used protocol. An alternative is -to use the LIRCD_IR_DEVICE option in /etc/sysconfig/lirc +(i. e., rc* ones) by making lirc the only used protocol. + + +%package tools-gui +Summary: LIRC GUI tools +Requires: lirc-core%{?_isa} = %{version}-%{release} + +%description tools-gui +Some seldom used X11-based tools for debugging lirc configurations. + + +%package drv-iguanaIR +Summary: IguanaIR LIRC User-Space Driver +Requires: lirc-core%{?_isa} = %{version}-%{release} +License: LGPLv2 + +%description drv-iguanaIR +LIRC user-space driver which works together with the low-level iguanaIR +package, providing full-fledged support for the iguanaIR devices. + + +%package drv-portaudio +Summary: Portaudio LIRC User-Space Driver +Requires: lirc-core%{?_isa} = %{version}-%{release} +License: LGPLv2 + +%description drv-portaudio +LIRC user space driver which supports a IR receiver in microphone input +using the portaudio library. + + +%package drv-irman +Summary: Irman LIRC User-Space Driver +Requires: lirc-core%{?_isa} = %{version}-%{release} + +%description drv-irman +LIRC user-space driver which works together with the kernel, providing +full support for the irman device. + + +%package drv-ftdi +Summary: Ftdi LIRC User-Space Driver +Requires: lirc-core%{?_isa} = %{version}-%{release} + +%description drv-ftdi +LIRC user-space driver which works together with the kernel, providing +full support for the ftdi device. # Don't provide or require anything from _docdir, per policy. @@ -162,61 +218,52 @@ to use the LIRCD_IR_DEVICE option in /etc/sysconfig/lirc %if 0%{?released} %setup -q %else -%setup -q -n %{name}-%{version}-%{pre} +%setup -qn %{name}-%{src_vers} %endif - %patch1 -p1 %patch2 -p1 %patch3 -p1 %patch4 -p1 - -chmod 644 contrib/* -chmod +x contrib/hal -chmod +x daemons/input_map.sh - +%patch5 -p1 +%patch6 -p1 sed -i -e 's|/usr/local/etc/|/etc/|' contrib/irman2lirc %build -mkdir m4 || : autoreconf -fi -export CFLAGS="%{optflags} -Werror=format-security" -%configure \ - --libdir=%{_libdir} \ - --disable-static \ - --disable-dependency-tracking \ - --enable-sandboxed \ -%if ! %{with x} - --without-x \ -%endif - --with-syslog=LOG_DAEMON \ - --with-driver=userspace -# make %%{?_smp_mflags} -# parallel makes are currently busted, do single-threaded for now -make + +CFLAGS="-I/usr/include/libftdi1 %{optflags}" %configure --libdir=%{_libdir} +make %{?_smp_mflags} %install make install DESTDIR=$RPM_BUILD_ROOT +tar -C $RPM_BUILD_ROOT/%{_pkgdocdir} \ + -xzf $RPM_BUILD_ROOT/%{_pkgdocdir}/api-docs.tar.gz +rm $RPM_BUILD_ROOT/%{_pkgdocdir}/api-docs.tar.gz +cd $RPM_BUILD_ROOT%{_datadir}/lirc/contrib +chmod 755 irman2lirc devinput.sh +chmod 755 lirc.debian lirc.redhat lircs lirc.suse* +cd $OLDPWD +rm $RPM_BUILD_ROOT%{_libdir}/*.la +rm $RPM_BUILD_ROOT%{_libdir}/lirc/plugins/*.la + install -pm 755 contrib/irman2lirc $RPM_BUILD_ROOT%{_bindir} install -Dpm 644 doc/lirc.hwdb $RPM_BUILD_ROOT%{_datadir}/lirc/lirc.hwdb -cp -a %{SOURCE1} README.fedora -install -Dpm 644 %{SOURCE2} \ +install -Dpm 644 %{SOURCE7} \ $RPM_BUILD_ROOT%{_udevrulesdir}/99-remote-control-lirc.rules - -# Put remote definitions in place -cp -ar remotes $RPM_BUILD_ROOT%{_datadir}/lirc-remotes - -rm $RPM_BUILD_ROOT%{_libdir}/liblirc_client.la - -rm -rf __docs; mkdir __docs -mv $RPM_BUILD_ROOT/usr/share/doc/lirc/* __docs -cp -pR contrib __docs +cp -a %{SOURCE6} README.fedora mkdir -p $RPM_BUILD_ROOT/%{_tmpfilesdir} echo "d /var/run/lirc 0755 root root 10d" \ - > $RPM_BUILD_ROOT/%{_tmpfilesdir}/lirc.conf + > $RPM_BUILD_ROOT%{_tmpfilesdir}/lirc.conf +%pre +getent group lirc >/dev/null || groupadd -r lirc +getent passwd lirc >/dev/null || \ + useradd -r -g lirc -d /var/log/lirc -s /sbin/nologin \ + -c "LIRC daemon user, runs lircd." lirc +exit 0 %post %systemd_post lircd.service lircmd.service @@ -232,45 +279,113 @@ find /etc/systemd -name lirc.service -xtype l -delete || : %postun %systemd_postun_with_restart lircd.service lircmd.servic -%postun libs -p /sbin/ldconfig +%files +%postun libs -p /sbin/ldconfig -%files -%doc AUTHORS ChangeLog COPYING NEWS README TODO README.fedora +%files compat + +%files drv-iguanaIR +%{_libdir}/lirc/plugins/iguanaIR.so +%{_datadir}/lirc/configs/iguanaIR.conf + +%files drv-irman +%{_libdir}/lirc/plugins/irman.so +%{_datadir}/lirc/configs/irman.conf + +%files drv-portaudio +%{_libdir}/lirc/plugins/audio.so +%{_datadir}/lirc/configs/audio.conf + +%files drv-ftdi +%{_libdir}/lirc/plugins/ftdi.so +%{_datadir}/lirc/configs/ftdi.conf + +%files tools-gui +%{_bindir}/xmode2 +%{_bindir}/irxevent +%{_mandir}/man1/irxevent* +%{_mandir}/man1/xmode2* + +%files config +%{_bindir}/irdb-get +%{_bindir}/lirc-config-tool +%{_bindir}/lirc-setup +%{_mandir}/man1/irdb-get* +%{_mandir}/man1/lirc-config-tool* +%{_mandir}/man1/lirc-setup* +%{_datadir}/lirc/configs/* +%{python3_sitelib}/lirc +%exclude %{_datadir}/lirc/configs/iguanaIR.conf +%exclude %{_datadir}/lirc/configs/irman.conf +%exclude %{_datadir}/lirc/configs/ftdi.conf +%exclude %{_datadir}/lirc/configs/audio.conf + + +%files core +%license COPYING +%doc README AUTHORS NEWS README.fedora %dir /etc/lirc -%config(noreplace) /etc/lirc/lirc*d.conf -%config(noreplace) /etc/lirc/lirc_options.conf +/etc/lirc/lircd.conf.d +%config(noreplace) /etc/lirc/lirc*.conf %{_tmpfilesdir}/lirc.conf %{_unitdir}/lirc* %{_bindir}/*ir* %{_bindir}/*mode2 -%{_sbindir}/lirc*d +%exclude %{_bindir}/irdb-get +%exclude %{_bindir}/xmode2 +%exclude %{_bindir}/irxevent +%exclude %{_bindir}/lirc-setup +%exclude %{_bindir}/lirc-config-tool +%{_sbindir}/lirc* +%{_libdir}/lirc/plugins +%exclude %{_libdir}/lirc/plugins/iguanaIR.so +%exclude %{_libdir}/lirc/plugins/irman.so +%exclude %{_libdir}/lirc/plugins/ftdi.so +%exclude %{_libdir}/lirc/plugins/audio.so %{_datadir}/lirc/ +%exclude %{_datadir}/lirc/configs/* %{_mandir}/man1/*ir*.1* %{_mandir}/man1/*mode2*.1* %{_mandir}/man8/lirc*d.8* +%{_mandir}/man5/lircd.conf.* +%exclude %{_mandir}/man1/lirc-config-tool* +%exclude %{_mandir}/man1/irdb-get* +%exclude %{_mandir}/man1/lirc-setup* +%exclude %{_mandir}/man1/irxevent* +%exclude %{_mandir}/man1/xmode2* + %files libs -%doc COPYING +#doc COPYING %{_libdir}/liblirc_client.so.* +%{_libdir}/liblirc_driver.so.* +%{_libdir}/liblirc.so.* %files devel %{_includedir}/lirc/ +%{_includedir}/lirc_private.h +%{_includedir}/lirc_driver.h +%{_includedir}/lirc_client.h %{_libdir}/liblirc_client.so +%{_libdir}/liblirc_driver.so +%{_libdir}/liblirc.so +%{_libdir}/pkgconfig/lirc-driver.pc +%{_libdir}/pkgconfig/lirc.pc %files doc -%doc COPYING __docs/* - - -%files remotes -%doc AUTHORS ChangeLog COPYING README -%{_datadir}/lirc-remotes +%doc COPYING ChangeLog +%{_pkgdocdir} %files disable-kernel-rc %{_udevrulesdir}/99-remote-control-lirc.rules %changelog +* Wed Dec 10 2014 Alec Leamas - 0.9.2-1 +- Major upstream update. +- New package structure with more, smaller packages. + * Wed Sep 03 2014 Alec Leamas - 0.9.1a-4 - rebuilt