* path.cc (path_conv::check): Rework loop removing trailing dots
and spaces. * syslog.cc (vklog): Set facility to LOG_KERN if not set.
This commit is contained in:
parent
22d7108ee5
commit
9e68bb7b50
@ -955,18 +955,26 @@ out:
|
|||||||
{
|
{
|
||||||
if (strncmp (path, "\\\\.\\", 4))
|
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;
|
char *tail = NULL;
|
||||||
for (char *p = path; *p; p++)
|
for (char *p = path; *p; p++)
|
||||||
|
{
|
||||||
if (*p != '.' && *p != ' ')
|
if (*p != '.' && *p != ' ')
|
||||||
tail = NULL;
|
tail = NULL;
|
||||||
else if (p[1] == '\\')
|
|
||||||
{
|
|
||||||
memmove (p, p + 1, strlen (p));
|
|
||||||
tail = NULL;
|
|
||||||
}
|
|
||||||
else if (!tail)
|
else if (!tail)
|
||||||
tail = p;
|
tail = p;
|
||||||
|
if (tail && p[1] == '\\')
|
||||||
|
{
|
||||||
|
if (p > tail || *tail != '.')
|
||||||
|
{
|
||||||
|
error = ENOENT;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
tail = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!tail || tail == path)
|
if (!tail || tail == path)
|
||||||
/* nothing */;
|
/* nothing */;
|
||||||
|
@ -484,6 +484,8 @@ vklog (int priority, const char *message, va_list ap)
|
|||||||
/* TODO: kernel messages are under our control entirely and they should
|
/* 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. */
|
be quick. No playing with /dev/null, but a fixed upper size for now. */
|
||||||
char buf[2060]; /* 2048 + a prority */
|
char buf[2060]; /* 2048 + a prority */
|
||||||
|
if (!(priority & ~LOG_PRIMASK))
|
||||||
|
priority = LOG_KERN | LOG_PRI (priority);
|
||||||
__small_sprintf (buf, "<%d>", priority);
|
__small_sprintf (buf, "<%d>", priority);
|
||||||
__small_vsprintf (buf + strlen (buf), message, ap);
|
__small_vsprintf (buf + strlen (buf), message, ap);
|
||||||
klog_guard.init ("klog_guard")->acquire ();
|
klog_guard.init ("klog_guard")->acquire ();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user