Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#333 closed defect (fixed)

rpm 4.13.0 does not accept backslashes in paths

Reported by: Lewis Rosenthal Owned by:
Priority: major Milestone:
Component: rpm Version:
Severity: highest Keywords:
Cc:

Description

It seems that when installing a package which is not in the current directory, rpm requires slashes as path separators, which is not very OS/2-friendly.

Example:

[C:\] rpm -i --replacepkgs c:\var\temp\myshinynew.rpm <Enter>
error: open of c:vartempmyshinynew.rpm failed: No such file or directory

Using slashes works as expected.

Downstream ticket reference:

https://mantis.arcanoae.com/view.php?id=2454

Change History (3)

comment:1 by Silvan Scherrer, 6 years ago

testfile uploaded to mantis.

note to myself:
rpmio/rpmfileutil.c changed

char * rpmEscapeSpaces(const char * s)
{
    const char * se;
    char * t;
    char * te;
    size_t nb = 0;

    for (se = s; *se; se++) {
#ifdef __OS2__
	if (isspace(*se) || *se == '\\')
#else
	if (isspace(*se))
#endif
	    nb++;
	nb++;
    }
    nb++;

    t = te = xmalloc(nb);
    for (se = s; *se; se++) {
#ifdef __OS2__
	if (isspace(*se) || *se == '\\')
#else
	if (isspace(*se))
#endif
	    *te++ = '\\';
	*te++ = *se;
    }
    *te = '\0';
    return t;
}

comment:2 by Lewis Rosenthal, 6 years ago

Unfortunately, the new rpmio7.dll requires libcn. Upgrading libc for this poses several other problems to the system (can't finish booting to the desktop, due to things not being able to launch from Startup, etc.).

This is going to take some time to figure out.

The path error for the single use case mentioned here seems to have been resolved (until a reboot, when the system becomes unusable).

comment:3 by Silvan Scherrer, 6 years ago

Resolution: fixed
Status: newclosed

r1621 fixes the issue. new rpm will be available soon

If you find issues with the new libcn, report it separately at our github please.

Last edited 6 years ago by Silvan Scherrer (previous) (diff)
Note: See TracTickets for help on using tickets.