col and cal wide chars fix, 'mount -o loop' fix
This commit is contained in:
parent
bc67171fe0
commit
632f4946d1
53
util-linux-2.12p-cal-wide.patch
Normal file
53
util-linux-2.12p-cal-wide.patch
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
--- util-linux-2.12p/misc-utils/cal.c.wide 2004-12-05 20:20:36.000000000 +0100
|
||||||
|
+++ util-linux-2.12p/misc-utils/cal.c 2006-01-02 15:13:50.000000000 +0100
|
||||||
|
@@ -368,7 +368,7 @@
|
||||||
|
int i, wd;
|
||||||
|
#ifdef ENABLE_WIDECHAR
|
||||||
|
wchar_t day_headings_wc[22],j_day_headings_wc[29];
|
||||||
|
- wchar_t wd_wc[10];
|
||||||
|
+ char *cur_dh = day_headings, *cur_j_dh = j_day_headings;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
strcpy(day_headings,"");
|
||||||
|
@@ -385,30 +385,25 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for(i = 0 ; i < 7 ; i++ ) {
|
||||||
|
+ ssize_t space_left;
|
||||||
|
wd = (i + week1stday) % 7;
|
||||||
|
#ifdef ENABLE_WIDECHAR
|
||||||
|
- mbstowcs(wd_wc,weekday(wd),10);
|
||||||
|
- if (wcswidth(wd_wc,10) < 3)
|
||||||
|
- wcscat(j_day_headings_wc,L" ");
|
||||||
|
- if (wcswidth(wd_wc,10) < 2) {
|
||||||
|
- wcscat(day_headings_wc, L" ");
|
||||||
|
- wcscat(j_day_headings_wc, L" ");
|
||||||
|
- }
|
||||||
|
- wcsncat(day_headings_wc,wd_wc,2);
|
||||||
|
- wcsncat(j_day_headings_wc,wd_wc,3);
|
||||||
|
- wcscat(day_headings_wc, L" ");
|
||||||
|
- wcscat(j_day_headings_wc, L" ");
|
||||||
|
+ swprintf(day_headings_wc, sizeof(day_headings_wc)/sizeof(day_headings_wc[0]),
|
||||||
|
+ L"%1.2s ", weekday(wd));
|
||||||
|
+ swprintf(j_day_headings_wc, sizeof(j_day_headings_wc)/sizeof(j_day_headings_wc[0]),
|
||||||
|
+ L"%3.3s ", weekday(wd));
|
||||||
|
+ space_left = sizeof(day_headings)-(cur_dh-day_headings);
|
||||||
|
+ if(space_left <= 0) break;
|
||||||
|
+ cur_dh += wcstombs(cur_dh,day_headings_wc, space_left);
|
||||||
|
+ space_left = sizeof(j_day_headings)-(cur_j_dh-j_day_headings);
|
||||||
|
+ if(space_left <= 0) break;
|
||||||
|
+ cur_j_dh += wcstombs(cur_j_dh,j_day_headings_wc, space_left);
|
||||||
|
#else
|
||||||
|
sprintf(eos(day_headings), "%2.2s ", weekday(wd));
|
||||||
|
sprintf(eos(j_day_headings), "%3.3s ", weekday(wd));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
-#ifdef ENABLE_WIDECHAR
|
||||||
|
- wcstombs(day_headings,day_headings_wc,sizeof(day_headings));
|
||||||
|
- wcstombs(j_day_headings,j_day_headings_wc,sizeof(j_day_headings));
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
trim_trailing_spaces(day_headings);
|
||||||
|
trim_trailing_spaces(j_day_headings);
|
||||||
|
#undef weekday
|
37
util-linux-2.12p-col-EILSEQ.patch
Normal file
37
util-linux-2.12p-col-EILSEQ.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
--- util-linux-2.12p/text-utils/col.c.EILSEQ 2002-03-09 00:05:12.000000000 +0100
|
||||||
|
+++ util-linux-2.12p/text-utils/col.c 2006-01-02 18:00:06.000000000 +0100
|
||||||
|
@@ -128,6 +128,7 @@
|
||||||
|
int this_line; /* line l points to */
|
||||||
|
int nflushd_lines; /* number of lines that were flushed */
|
||||||
|
int adjust, opt, warned;
|
||||||
|
+ int ret = 0;
|
||||||
|
|
||||||
|
setlocale(LC_ALL, "");
|
||||||
|
bindtextdomain(PACKAGE, LOCALEDIR);
|
||||||
|
@@ -175,8 +176,15 @@
|
||||||
|
cur_line = max_line = nflushd_lines = this_line = 0;
|
||||||
|
cur_set = last_set = CS_NORMAL;
|
||||||
|
lines = l = alloc_line();
|
||||||
|
-
|
||||||
|
- while ((ch = getwchar()) != WEOF) {
|
||||||
|
+
|
||||||
|
+ while (feof(stdin)==0) {
|
||||||
|
+ errno = 0;
|
||||||
|
+ if ((ch = getwchar()) == WEOF) {
|
||||||
|
+ if (errno==EILSEQ)
|
||||||
|
+ perror("col");
|
||||||
|
+ ret = 1;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
if (!iswgraph(ch)) {
|
||||||
|
switch (ch) {
|
||||||
|
case BS: /* can't go back further */
|
||||||
|
@@ -332,7 +340,7 @@
|
||||||
|
flush_blanks();
|
||||||
|
if (ferror(stdout) || fclose(stdout))
|
||||||
|
return 1;
|
||||||
|
- return 0;
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void flush_lines(int nflush)
|
@ -46,7 +46,7 @@ diff -urN util-linux-2.13-pre5.orig/hwclock/audit.c util-linux-2.13-pre5/hwclock
|
|||||||
+{
|
+{
|
||||||
+ if (audit_this) {
|
+ if (audit_this) {
|
||||||
+ audit_log_user_message(audit_fd, AUDIT_USYS_CONFIG,
|
+ audit_log_user_message(audit_fd, AUDIT_USYS_CONFIG,
|
||||||
+ "changing system time", NULL, NULL, NULL, status);
|
+ "changing system time", NULL, NULL, NULL, status ? 0 : 1);
|
||||||
+ close(audit_fd);
|
+ close(audit_fd);
|
||||||
+ }
|
+ }
|
||||||
+ exit(status);
|
+ exit(status);
|
||||||
|
62
util-linux-2.13-mount-twiceloop.patch
Normal file
62
util-linux-2.13-mount-twiceloop.patch
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
--- util-linux-2.13-pre6/mount/fstab.c.twiceloop 2006-01-03 18:35:05.000000000 +0100
|
||||||
|
+++ util-linux-2.13-pre6/mount/fstab.c 2006-01-03 18:37:44.000000000 +0100
|
||||||
|
@@ -254,6 +254,27 @@
|
||||||
|
return (ct == 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
+/*
|
||||||
|
+ * Given the loop file LOOPFILE, and the mount point DIR, check that
|
||||||
|
+ * same file is already mounted on same directory
|
||||||
|
+ *
|
||||||
|
+ * Don't forget there's
|
||||||
|
+ * /path/loopfile /path/dir loop=/dev/loop0
|
||||||
|
+ * in mtab for loop devices.
|
||||||
|
+ */
|
||||||
|
+int
|
||||||
|
+is_mounted_same_loopfile(const char *loopfile, const char *dir) {
|
||||||
|
+ struct mntentchn *mc, *mc0;
|
||||||
|
+ int ct = 0;
|
||||||
|
+
|
||||||
|
+ mc0 = mtab_head();
|
||||||
|
+ for (mc = mc0->prev; mc && mc != mc0; mc = mc->prev)
|
||||||
|
+ if (streq(mc->m.mnt_fsname, loopfile) &&
|
||||||
|
+ streq(mc->m.mnt_dir, dir))
|
||||||
|
+ ct++;
|
||||||
|
+ return (ct == 1);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* Given the name FILE, try to find the option "loop=FILE" in mtab. */
|
||||||
|
struct mntentchn *
|
||||||
|
getmntoptfile (const char *file) {
|
||||||
|
--- util-linux-2.13-pre6/mount/mount.c.twiceloop 2006-01-03 18:35:06.000000000 +0100
|
||||||
|
+++ util-linux-2.13-pre6/mount/mount.c 2006-01-03 18:37:44.000000000 +0100
|
||||||
|
@@ -671,7 +671,7 @@
|
||||||
|
|
||||||
|
static int
|
||||||
|
loop_check(const char **spec, const char **type, int *flags,
|
||||||
|
- int *loop, const char **loopdev, const char **loopfile) {
|
||||||
|
+ int *loop, const char **loopdev, const char **loopfile, const char *dir) {
|
||||||
|
int looptype;
|
||||||
|
unsigned long long offset;
|
||||||
|
|
||||||
|
@@ -709,6 +709,11 @@
|
||||||
|
} else {
|
||||||
|
int loopro = (*flags & MS_RDONLY);
|
||||||
|
|
||||||
|
+ if (is_mounted_same_loopfile(*loopfile, dir)) {
|
||||||
|
+ error(_("mount: %s already mounted on %s"), *loopfile, dir);
|
||||||
|
+ return EX_FAIL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (!*loopdev || !**loopdev)
|
||||||
|
*loopdev = find_unused_loop_device();
|
||||||
|
if (!*loopdev)
|
||||||
|
@@ -856,7 +861,7 @@
|
||||||
|
* stale assignments of files to loop devices. Nasty when used for
|
||||||
|
* encryption.
|
||||||
|
*/
|
||||||
|
- res = loop_check(&spec, &types, &flags, &loop, &loopdev, &loopfile);
|
||||||
|
+ res = loop_check(&spec, &types, &flags, &loop, &loopdev, &loopfile, node);
|
||||||
|
if (res)
|
||||||
|
goto out;
|
||||||
|
}
|
@ -25,7 +25,7 @@ BuildRoot: %{_tmppath}/%{name}-root
|
|||||||
Summary: A collection of basic system utilities.
|
Summary: A collection of basic system utilities.
|
||||||
Name: util-linux
|
Name: util-linux
|
||||||
Version: 2.13
|
Version: 2.13
|
||||||
Release: 0.12
|
Release: 0.13
|
||||||
License: distributable
|
License: distributable
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
|
|
||||||
@ -161,7 +161,12 @@ Patch217: util-linux-2.13-cramfs-maxentries.patch
|
|||||||
Patch218: util-linux-2.13-cramfs-zerofiles.patch
|
Patch218: util-linux-2.13-cramfs-zerofiles.patch
|
||||||
# 172203 - mount man page in RHEL4 lacks any info on cifs mount options
|
# 172203 - mount man page in RHEL4 lacks any info on cifs mount options
|
||||||
Patch219: util-linux-2.12a-mount-man-cifs.patch
|
Patch219: util-linux-2.12a-mount-man-cifs.patch
|
||||||
|
# better wide chars usage in the cal command (based on the old 'moremisc' patch)
|
||||||
|
Patch220: util-linux-2.12p-cal-wide.patch
|
||||||
|
# 176441: col truncates data
|
||||||
|
Patch221: util-linux-2.12p-col-EILSEQ.patch
|
||||||
|
# 174111 - mount allows loopback devices to be mounted more than once to the same mount point
|
||||||
|
Patch222: util-linux-2.13-mount-twiceloop.patch
|
||||||
|
|
||||||
# When adding patches, please make sure that it is easy to find out what bug # the
|
# When adding patches, please make sure that it is easy to find out what bug # the
|
||||||
# patch fixes.
|
# patch fixes.
|
||||||
@ -233,6 +238,9 @@ cp %{SOURCE8} %{SOURCE9} .
|
|||||||
%patch217 -p1
|
%patch217 -p1
|
||||||
%patch218 -p1
|
%patch218 -p1
|
||||||
%patch219 -p1
|
%patch219 -p1
|
||||||
|
%patch220 -p1
|
||||||
|
%patch221 -p1
|
||||||
|
%patch222 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
unset LINGUAS || :
|
unset LINGUAS || :
|
||||||
@ -616,6 +624,12 @@ fi
|
|||||||
/sbin/losetup
|
/sbin/losetup
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jan 3 2006 Karel Zak <kzak@redhat.com> 2.13-0.13
|
||||||
|
- fix #174676 - hwclock audit return code mismatch
|
||||||
|
- fix #176441: col truncates data
|
||||||
|
- fix #174111 - mount allows loopback devices to be mounted more than once to the same mount point
|
||||||
|
- better wide chars usage in the cal command (based on the old 'moremisc' patch)
|
||||||
|
|
||||||
* Mon Dec 12 2005 Karel Zak <kzak@redhat.com> 2.13-0.12
|
* Mon Dec 12 2005 Karel Zak <kzak@redhat.com> 2.13-0.12
|
||||||
- rebuilt
|
- rebuilt
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user