On 1/4/2021 10:17 PM, Brian Inglis wrote:
On 2021-01-04 18:34, Roger Kaufman wrote:
When I cross compile the following program, opening /dev/null fails and instead the whole install
path of /cygwin64/dev/null is visible.
Is there a way to make fopen respect / as the root directory in a cross
compiled program for windows?
example output...
Roger@interocitor:~
$ x86_64-w64-mingw32-g++ -o writenull.exe write2null.cc
Roger@interocitor:~
$ writenull.exe
/dev/null did not succeed
Roger@interocitor:~
$ gcc -o writenull write2null.cc
Roger@interocitor:~
$ writenull
/cygwin64/dev/null did not succeed
C Code that was compiled...
#include <cstdio>
int main(int argc, char **argv)
{
FILE *errfile1 = fopen("/dev/null", "w");
if (!errfile1) // must be a valid pointer
errfile1 = stderr;
FILE *errfile2 = fopen("/cygwin64/dev/null", "w");
if (!errfile2) // must be a valid pointer
errfile2 = stderr;
fprintf(errfile1, "/dev/null did not succeed\n");
fprintf(errfile2, "/cygwin64/dev/null did not succeed\n");
return 0;
}
It's a Windows program - it can do whatever you program it to do!
On Windows the device is NUL, the root is the drive root C:\,
and anything else depends on the Windows subsystem.
To do otherwise you have to program it to emulate the Cygwin emulation,
or build it as a Cygwin program using the Cygwin toolchain.
Is there a Windows equivalent to chroot (either the program or the
library/system call)?
Regards - Eliot
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple