diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2005-12-27 18:10:49 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2005-12-27 18:10:49 +0000 |
commit | 9e68bb7b50888ba3ff1c2bbcef78e6f6c9f1b4a0 (patch) | |
tree | 9998356dfe4d013ff7dce82ff69d821af33c98b0 | |
parent | 22d7108ee5dbd881a6d48855d6de2e425a4d5e3e (diff) | |
download | newlib-9e68bb7b50888ba3ff1c2bbcef78e6f6c9f1b4a0.zip newlib-9e68bb7b50888ba3ff1c2bbcef78e6f6c9f1b4a0.tar.gz newlib-9e68bb7b50888ba3ff1c2bbcef78e6f6c9f1b4a0.tar.bz2 |
* path.cc (path_conv::check): Rework loop removing trailing dots
and spaces.
* syslog.cc (vklog): Set facility to LOG_KERN if not set.
-rw-r--r-- | winsup/cygwin/path.cc | 26 | ||||
-rw-r--r-- | winsup/cygwin/syslog.cc | 2 |
2 files changed, 19 insertions, 9 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index f2b56cf..8fc616e 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -955,18 +955,26 @@ out: { if (strncmp (path, "\\\\.\\", 4)) { - /* Windows ignores trailing dots and spaces */ + /* Windows ignores trailing dots and spaces in the last path + component, and ignores exactly one trailing dot in inner + path components. */ char *tail = NULL; for (char *p = path; *p; p++) - if (*p != '.' && *p != ' ') - tail = NULL; - else if (p[1] == '\\') - { - memmove (p, p + 1, strlen (p)); + { + if (*p != '.' && *p != ' ') tail = NULL; - } - else if (!tail) - tail = p; + else if (!tail) + tail = p; + if (tail && p[1] == '\\') + { + if (p > tail || *tail != '.') + { + error = ENOENT; + return; + } + tail = NULL; + } + } if (!tail || tail == path) /* nothing */; diff --git a/winsup/cygwin/syslog.cc b/winsup/cygwin/syslog.cc index fc6758b..2ea0d62 100644 --- a/winsup/cygwin/syslog.cc +++ b/winsup/cygwin/syslog.cc @@ -484,6 +484,8 @@ vklog (int priority, const char *message, va_list ap) /* TODO: kernel messages are under our control entirely and they should be quick. No playing with /dev/null, but a fixed upper size for now. */ char buf[2060]; /* 2048 + a prority */ + if (!(priority & ~LOG_PRIMASK)) + priority = LOG_KERN | LOG_PRI (priority); __small_sprintf (buf, "<%d>", priority); __small_vsprintf (buf + strlen (buf), message, ap); klog_guard.init ("klog_guard")->acquire (); |