From 7100e4c209ce2433359362ab7bb3209ceac027c0 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Tue, 12 Mar 2013 09:44:46 +0100 Subject: [PATCH] The parameters PATH and NAME to the --dirnames command line option may now be left empty to use the default values if only ENC shall be set --- HISTORY | 4 +++- vdr.1 | 5 +++-- vdr.c | 58 +++++++++++++++++++++++++++++++-------------------------- 3 files changed, 38 insertions(+), 29 deletions(-) diff --git a/HISTORY b/HISTORY index 95a4ebad..489c61a6 100644 --- a/HISTORY +++ b/HISTORY @@ -7730,7 +7730,7 @@ Video Disk Recorder Revision History to avoid problems with SD-FF cards in case the user switches to the "ST:TNG" or "Classic" skin. -2013-03-11: Version 1.7.41 +2013-03-12: Version 1.7.41 - Updated the Hungarian OSD texts (thanks to István Füley). - Updated the Russian OSD texts (thanks to Oleg Roitburd). @@ -7740,3 +7740,5 @@ Video Disk Recorder Revision History - The 'plugins' target of the VDR Makefile now also copies files matching the wildcard "lib$$i-*.so" (previously only "libvdr-*.so") and also descends into subdirectories of the plugin source. +- The parameters PATH and NAME to the --dirnames command line option may now be left + empty to use the default values if only ENC shall be set. diff --git a/vdr.1 b/vdr.1 index b40dd8e5..dbbb4c4d 100644 --- a/vdr.1 +++ b/vdr.1 @@ -8,7 +8,7 @@ .\" License as specified in the file COPYING that comes with the .\" vdr distribution. .\" -.\" $Id: vdr.1 2.14 2013/03/11 13:16:50 kls Exp $ +.\" $Id: vdr.1 2.15 2013/03/12 09:42:25 kls Exp $ .\" .TH vdr 1 "31 Mar 2013" "2.0" "Video Disk Recorder" .SH NAME @@ -57,12 +57,13 @@ Run in daemon mode (implies \-\-no\-kbd). Use only the given DVB device (\fInum\fR = 0, 1, 2...). There may be several \fB\-D\fR options (by default all DVB devices will be used). .TP -.BI \-\-dirnames= path[,name[,enc]] +.BI \-\-dirnames= path [, name [, enc ]] Set the maximum directory path length to \fIpath\fR (default is the maximum value allowed on the system). If \fIname\fR is also given, it defines the maximum directory name length (default is the maximum value allowed on the system). The optional \fIenc\fR can be 0 or 1, and controls whether special characters in directory names are encoded as hex values (default: 0). +If \fIpath\fR or \fIname\fR are left empty (as in ",,1" to only set \fIenc\fR), the defaults apply. The length of the video directory name and that of the actual recording directory is subtracted from \fIpath\fR, to make sure the directory path will never become too long. .TP diff --git a/vdr.c b/vdr.c index 7fb16acd..432712ba 100644 --- a/vdr.c +++ b/vdr.c @@ -22,7 +22,7 @@ * * The project's page is at http://www.tvdr.de * - * $Id: vdr.c 2.53 2013/03/11 11:51:27 kls Exp $ + * $Id: vdr.c 2.54 2013/03/12 09:23:33 kls Exp $ */ #include @@ -280,31 +280,35 @@ int main(int argc, char *argv[]) return 2; case 'd' | 0x100: { char *s = optarg; + if (*s != ',') { + int n = strtol(s, &s, 10); + if (n <= 0 || n >= PATH_MAX) { // PATH_MAX includes the terminating 0 + fprintf(stderr, "vdr: invalid directory path length: %s\n", optarg); + return 2; + } + DirectoryPathMax = n; + } + if (!*s) + break; + if (*s++ != ',') { + fprintf(stderr, "vdr: invalid delimiter: %s\n", optarg); + return 2; + } + if (*s != ',') { + int n = strtol(s, &s, 10); + if (n <= 0 || n > NAME_MAX) { // NAME_MAX excludes the terminating 0 + fprintf(stderr, "vdr: invalid directory name length: %s\n", optarg); + return 2; + } + DirectoryNameMax = n; + } + if (!*s) + break; + if (*s++ != ',') { + fprintf(stderr, "vdr: invalid delimiter: %s\n", optarg); + return 2; + } int n = strtol(s, &s, 10); - if (n <= 0 || n >= PATH_MAX) { // PATH_MAX includes the terminating 0 - fprintf(stderr, "vdr: invalid directory path length: %s\n", optarg); - return 2; - } - DirectoryPathMax = n; - if (!*s) - break; - if (*s++ != ',') { - fprintf(stderr, "vdr: invalid delimiter: %s\n", optarg); - return 2; - } - n = strtol(s, &s, 10); - if (n <= 0 || n > NAME_MAX) { // NAME_MAX excludes the terminating 0 - fprintf(stderr, "vdr: invalid directory name length: %s\n", optarg); - return 2; - } - DirectoryNameMax = n; - if (!*s) - break; - if (*s++ != ',') { - fprintf(stderr, "vdr: invalid delimiter: %s\n", optarg); - return 2; - } - n = strtol(s, &s, 10); if (n != 0 && n != 1) { fprintf(stderr, "vdr: invalid directory encoding: %s\n", optarg); return 2; @@ -480,7 +484,9 @@ int main(int argc, char *argv[]) " the maximum directory name length (default: %d);\n" " the optional ENC can be 0 or 1, and controls whether\n" " special characters in directory names are encoded as\n" - " hex values (default: 0)\n" + " hex values (default: 0); if PATH or NAME are left\n" + " empty (as in \",,1\" to only set ENC), the defaults\n" + " apply\n" " --edit=REC cut recording REC and exit\n" " -E FILE, --epgfile=FILE write the EPG data into the given FILE (default is\n" " '%s' in the video directory)\n"