Mail Archives: cygwin/2004/06/30/07:09:00
On Jun 30 11:46, Guettich, Ulrich, OPM2 wrote:
> Hi,
>
> I have recognized that files named "aux", "lpt1", "nul", "prn" ... (old DOS
> devices) generated under Cygwin on a XP OS cannot be deleted anymore:
>
> rm: cannot unlink `prn': Permission denied
>
> Why? How to get rid of them?
It's a bug in 1.5.10 that these files can be created. That will be fixed
in the next version.
In the meantime, build the below source with
gcc ntdel.c -o ntdel -lntdll
Let's say, the directory in which you created "nul" is C:\your\dir, then
you should get rid of that file with
ntdel c:/your/dir/nul
Corinna
==== SNIP ====
#include <stdio.h>
#include <ctype.h>
#include <windows.h>
#include <ntdef.h>
#include <ddk/ntifs.h>
int
main (int argc, char **argv)
{
char apath[MAX_PATH + 32];
char *c;
WCHAR wpath[MAX_PATH + 32];
UNICODE_STRING upath;
OBJECT_ATTRIBUTES attr;
NTSTATUS ret;
if (argc < 2 || !isalpha (argv[1][0]) || argv[1][1] != ':')
{
fprintf (stderr, "usage: %s full-local-win32-path\n", argv[0]);
return 1;
}
strcpy (apath, "\\??\\");
strcat (apath, argv[1]);
while (c = strchr (apath, '/'))
*c = '\\';
upath.Buffer = wpath;
upath.MaximumLength = (MAX_PATH + 32) * sizeof (wchar_t);
upath.Length = (MultiByteToWideChar (GetACP (), 0, apath, -1,
upath.Buffer, upath.MaximumLength) - 1)
* sizeof (WCHAR);
InitializeObjectAttributes (&attr, &upath, OBJ_CASE_INSENSITIVE, NULL, NULL);
ret = NtDeleteFile (&attr);
if (!NT_SUCCESS (ret))
{
fprintf (stderr, "NtDeleteFile returned with Win32 err %lu\n",
RtlNtStatusToDosError (ret));
return 1;
}
printf ("File successfully deleted\n");
return 0;
}
==== SNAP ====
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Co-Project Leader mailto:cygwin AT cygwin DOT com
Red Hat, Inc.
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -