v1_4_13 (devel)
|
v1_4_14
+ |
+v1_4_15
+2015-11-03 Mark Geisert <mark@maxrnd.com>
+
+ Release 1.4.15
+ * configure.ac: Bump version number to 1.4.15.
+ * BRANCHES: Ditto.
+ * src/cygdrop/cygdrop.cc (match_priv): strcmpi() -> strcasecmp().
+ * src/lpr/Printer.cc (::mapPortName): stricmp() -> strcasecmp().
+ * src/mkshortcut/mkshortcut.cc: Don't free() adjusted pointer.
+ Also handle changed Windows behavior when saving link to relative
+ path; evident after Windows 7. Reporter Anthony Heading refers to
+ https://msdn.microsoft.com/en-us/
+ library/windows/desktop/hh848036%28v=vs.85%29.aspx
+
2013-07-28 Charles Wilson <cwilson@...>
Release 1.4.14
- * configure.ac: Bump version number to 1.4.12.
+ * configure.ac: Bump version number to 1.4.14.
Update to latest autoconf/automake.
* BRANCHES: Ditto.
+1.4.15
+ New maintainer Mark Geisert <mark@maxrnd.com>.
+ Source code master converted from CVS to Git, still hosted at sourceware.
+ * cygdrop: Replace strcmpi() calls with strcasecmp().
+ * lpr: Replace stricmp() calls with strcasecmp().
+ * mkshortcut: Fix seg fault due to freeing adjusted pointer. Patch from
+ reporter Anthony Heading.
+ * mkshortcut: Handle changed Windows behavior when saving a link to a
+ relative path; change evident after Windows 7. Patch from reporter
+ Anthony Heading.
+
1.4.14
* cygdrop: Fix bug in obtaining security token information
Patch from Corinna Vinschen, reported by Achim Gratz.
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.69)
-AC_INIT(cygutils, 1.4.14, cygwin@cygwin.com)
+AC_INIT(cygutils, 1.4.15, cygwin@cygwin.com)
AC_CONFIG_SRCDIR([config.h.in])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
static bool
match_priv (const char * priv, const char * pattern)
{
- if (!strcmpi (priv, pattern))
+ if (!strcasecmp (priv, pattern))
return true;
char buf[strlen (pattern) + 16];
sprintf (buf, "Se%sPrivilege", pattern);
- return !strcmpi (priv, buf);
+ return !strcasecmp (priv, buf);
}
/* use long options for standard options, for
PrinterList list = enumPrinters(PRINTER_ENUM_NAME, empty);
for (PrinterList::iterator it = list.begin(); it != list.end(); ++it)
{
- if (stricmp(m_devName.c_str(), it->pPortName) == 0)
+ if (strcasecmp(m_devName.c_str(), it->pPortName) == 0)
{
if (m_debugFlag)
cout << "Mapped '" << m_devName << "' to '" << it->pPrinterName
PrinterList list = enumPrinters(PRINTER_ENUM_LOCAL, 0);
for (PrinterList::iterator it = list.begin(); it != list.end(); ++it)
{
- if (stricmp(m_devName.c_str(), it->pPortName) == 0)
+ if (strcasecmp(m_devName.c_str(), it->pPortName) == 0)
{
if (m_debugFlag)
cout << "Mapped '" << m_devName << "' to '" << it->pPrinterName
list = enumPrinters(PRINTER_ENUM_CONNECTIONS, 0);
for (PrinterList::iterator it = list.begin(); it != list.end(); ++it)
{
- if (stricmp(m_devName.c_str(), it->pPortName) == 0)
+ if (strcasecmp(m_devName.c_str(), it->pPortName) == 0)
{
if (m_debugFlag)
cout << "Mapped '" << m_devName << "' to '" << it->pPrinterName
char* exe_name = NULL;
char* dir_name = NULL;
char* desc = NULL;
- char *buf_str, *tmp_str;
+ char *buf_str, *tmp_str, *base_str;
int tmp;
/* For OLE interface */
IShellLink *shell_link;
IPersistFile *persist_file;
WCHAR widepath[MAX_PATH];
+ char link_path[MAX_PATH];
/* If there's a colon in the TARGET, it should be a URL */
if (strchr (opts.target_arg, ':') != NULL)
{
/* Strip trailing /'s if any */
buf_str = xstrndup (opts.target_arg, strlen(opts.target_arg));
+ base_str = buf_str;
tmp_str = buf_str;
tmp = strlen (buf_str) - 1;
while (strrchr (buf_str, '/') == (buf_str + tmp))
buf_str++;
}
link_name = xstrndup (tmp_str, strlen (tmp_str));
- free (buf_str);
+ free (base_str);
}
/* User specified a name, so check it and convert */
else
free (buf_str);
}
+ /* After Windows 7, saving link to relative path fails; work around that */
+ hres = GetFullPathName (link_name, sizeof (link_path), link_path, 0);
+ if (hres == 0)
+ {
+ fprintf (stderr, "%s: Could not qualify link name\n", program_name);
+ return 2;
+ }
+ free (link_name);
+ link_name = xstrndup (link_path, strlen (link_path));
+
/* Setup description text */
if (opts.desc_arg != NULL)
{