From: <abe...@us...> - 2016-11-06 18:13:44
|
Revision: 7934 http://sourceforge.net/p/astlinux/code/7934 Author: abelbeck Date: 2016-11-06 18:13:41 +0000 (Sun, 06 Nov 2016) Log Message: ----------- revert r7933 Revision Links: -------------- http://sourceforge.net/p/astlinux/code/7933 Modified Paths: -------------- branches/1.0/package/makedevs/makedevs.c Modified: branches/1.0/package/makedevs/makedevs.c =================================================================== --- branches/1.0/package/makedevs/makedevs.c 2016-11-06 14:13:15 UTC (rev 7933) +++ branches/1.0/package/makedevs/makedevs.c 2016-11-06 18:13:41 UTC (rev 7934) @@ -500,8 +500,6 @@ } else { dev_t rdev; - unsigned i; - char *full_name_inc; if (type == 'p') { mode |= S_IFIFO; @@ -517,24 +515,43 @@ goto loop; } - full_name_inc = xmalloc(strlen(full_name) + sizeof(int)*3 + 2); - if (count) - count--; - for (i = start; i <= start + count; i++) { - sprintf(full_name_inc, count ? "%s%u" : "%s", full_name, i); - rdev = makedev(major, minor + (i - start) * increment); - if (mknod(full_name_inc, mode, rdev) < 0) { - bb_perror_msg("line %d: can't create node %s", linenum, full_name_inc); + if (count > 0) { + int i; + char *full_name_inc; + + full_name_inc = xmalloc(strlen(full_name) + 8); + for (i = 0; i < count; i++) { + sprintf(full_name_inc, "%s%d", full_name, start + i); + rdev = makedev(major, minor + i * increment); + if (mknod(full_name_inc, mode, rdev) == -1) { + bb_perror_msg("line %d: Couldnt create node %s", linenum, full_name_inc); + ret = EXIT_FAILURE; + } + else if (chown(full_name_inc, uid, gid) == -1) { + bb_perror_msg("line %d: chown failed for %s", linenum, full_name_inc); + ret = EXIT_FAILURE; + } + if ((mode != -1) && (chmod(full_name_inc, mode) < 0)){ + bb_perror_msg("line %d: chmod failed for %s", linenum, full_name_inc); + ret = EXIT_FAILURE; + } + } + free(full_name_inc); + } else { + rdev = makedev(major, minor); + if (mknod(full_name, mode, rdev) == -1) { + bb_perror_msg("line %d: Couldnt create node %s", linenum, full_name); ret = EXIT_FAILURE; - } else if (chown(full_name_inc, uid, gid) < 0) { - bb_perror_msg("line %d: can't chown %s", linenum, full_name_inc); + } + else if (chown(full_name, uid, gid) == -1) { + bb_perror_msg("line %d: chown failed for %s", linenum, full_name); ret = EXIT_FAILURE; - } else if (chmod(full_name_inc, mode) < 0) { - bb_perror_msg("line %d: can't chmod %s", linenum, full_name_inc); + } + if ((mode != -1) && (chmod(full_name, mode) < 0)){ + bb_perror_msg("line %d: chmod failed for %s", linenum, full_name); ret = EXIT_FAILURE; } } - free(full_name_inc); } loop: free(line); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |