[CSOUND-DEV:3102] RE: Read-only files in Windows
Date | 2003-09-30 15:29 |
From | "gogins@pipeline.com" |
Subject | [CSOUND-DEV:3102] RE: Read-only files in Windows |
Please fix it if you can. In my code I have resorted to forcing a delete of these files before running again. Original Message: ----------------- From: ramsdell@mitre.org (John D. Ramsdell) Date: 30 Sep 2003 09:45:15 -0400 To: csound-dev@eartha.mills.edu Subject: [CSOUND-DEV:3101] Read-only files in Windows I notice that wxCSound generates read-only files on Windows. It uses the CSound API, and the generated files seem to be opened in filopen.c. Does anyone have a patch for this problem? I hesitate to jump in as I found the following comment in filopen.c at line number 109: /** * Changed file permissions so that re-entrant versions of Csound * can overwrite files without need for manual deletion. * Still doesn't seem to work... */ John -------------------------------------------------------------------- mail2web - Check your email from the web at http://mail2web.com/ . |
Date | 2003-09-30 20:22 |
From | ramsdell@mitre.org (John D. Ramsdell) |
Subject | [CSOUND-DEV:3103] RE: Read-only files in Windows |
"gogins@pipeline.com" |
Date | 2003-09-30 21:25 |
From | Richard Dobson |
Subject | [CSOUND-DEV:3104] RE: Read-only files in Windows |
My version of 4.23 Winsound doesn't create read-only files. I have no idea at this distance if I hacked anything. These are all low-level calls, and not part of ANSCI C as such (POSIX is a quite different beast, and relatively little of Windows, at least, is POSIX compliant, so I hear); so they do tend to exhibit greater or lesser differences across platforms. In a unix system, the third argument enables the programmer to set permissions acording to the standard ownership flags (rwx * owner/group/others). Windows just offers a single global read/write permission. As you rightly say, it is required only with _O_CREAT. The ifdefs are supposed to ensure the right combination is used, including the third arg. My guess is that something is amiss with the mass of preprocessor ifdefs. That said, the symbol MSVC (duuno where that came from! :-) ) needs to be replaced with _MSC_VER, which is the standard ID for Visual C++. Richard Dobson John D. Ramsdell wrote: > "gogins@pipeline.com" |
Date | 2003-10-01 11:26 |
From | ramsdell@mitre.org (John D. Ramsdell) |
Subject | [CSOUND-DEV:3106] RE: Read-only files in Windows |
I think the explanation for the filopen.c code for compilations satisfying defined(mac_classic) || defined(SYMANTEC) || defined(WIN32) is simply someone misunderstood the macros, and erroneously dropped the mode specifier for that case. You may have noticed that Java provides no preprocessor, and C++ provides features that greatly reduce the need for a preprocessor. I think this is an example of why language designers are moving away from preprocessors. Another example is mididevice.c. Who knows what that code does? In any event, after testing, I patched the sources in the csound module as follows: sh-2.05b$ ../sfcvs diff -u ramsdell@cvs.csound.sourceforge.net's password: cvs server: Diffing . Index: cs.h =================================================================== RCS file: /cvsroot/csound/csound/cs.h,v retrieving revision 1.3 diff -u -r1.3 cs.h --- cs.h 18 Sep 2003 14:43:20 -0000 1.3 +++ cs.h 1 Oct 2003 10:08:30 -0000 @@ -838,7 +838,7 @@ #endif #include "prototyp.h" -#ifdef FLTK_GUI +#if defined FLTK_GUI || defined WX_GUI #define printf csoundMessage0 extern void csoundMessage0(const char *, ...); extern void err_printf(char *, ...); Index: filopen.c =================================================================== RCS file: /cvsroot/csound/csound/filopen.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 filopen.c --- filopen.c 30 May 2003 14:28:21 -0000 1.1.1.1 +++ filopen.c 1 Oct 2003 10:08:30 -0000 @@ -119,7 +119,7 @@ #endif #elif defined(mac_classic) || defined(SYMANTEC) || defined(WIN32) #define RD_OPTS O_RDONLY | O_BINARY -#define WR_OPTS O_TRUNC | O_CREAT | O_WRONLY | O_BINARY +#define WR_OPTS O_TRUNC | O_CREAT | O_WRONLY | O_BINARY, 0644 #elif defined DOSGCC #define RD_OPTS O_RDONLY | O_BINARY, 0 #define WR_OPTS O_TRUNC | O_CREAT | O_WRONLY | O_BINARY, 0644 Index: mididevice.c =================================================================== RCS file: /cvsroot/csound/csound/mididevice.c,v retrieving revision 1.4 diff -u -r1.4 mididevice.c --- mididevice.c 2 Sep 2003 13:09:33 -0000 1.4 +++ mididevice.c 1 Oct 2003 10:08:30 -0000 @@ -109,7 +109,7 @@ static port_id gMidiInPort = B_ERROR; #elif defined(mac_classic) -#elif !defined(DOSGCC) && !defined(__WATCOMC__)&& !defined(LATTICE) && !defined(WIN32) && !defined(SYMANTEC) && !defined(__EMX__) +#elif !defined(DOSGCC) && !defined(__WATCOMC__)&& !defined(LATTICE) && !defined(WIN32) && !defined(SYMANTEC) && !defined(__EMX__) && !defined(LOSE_MIDI_TTY) # if defined(__MACH__) # define USE_OLD_TTY 1 # endif @@ -386,7 +386,7 @@ } } # endif /* HAVE_BSD_SGTTY_H */ -#elif !defined(__BEOS__) && !defined(mac_classic) +#elif !defined(__BEOS__) && !defined(mac_classic) && !defined(LOSE_MIDI_TTY) # if !defined(DOSGCC) && !defined(__WATCOMC__) && !defined(LATTICE) && !defined(WIN32) && !defined(__EMX__) ioctl(rtfd, TIOCGETP, &tty); /* for other machines */ tty.sg_ispeed = INBAUD; /* set baud rate */ cvs server: Diffing CsoundVST cvs server: Diffing CsoundVSTWin cvs server: Diffing OSC-Kit cvs server: Diffing OSC-Kit/send+dump cvs server: Diffing anal cvs server: Diffing anal/adsyn cvs server: Diffing anal/convol cvs server: Diffing anal/lpc cvs server: Diffing anal/pvoc cvs server: Diffing cscofils cvs server: Diffing pyrun cvs server: Diffing util1 cvs server: Diffing util1/cscore cvs server: Diffing util1/scot cvs server: Diffing util1/sortex cvs server: Diffing util2 cvs server: Diffing util2/dnoise.dir cvs server: Diffing util2/envext cvs server: Diffing util2/exports cvs server: Diffing util2/mixer cvs server: Diffing util2/mkgraph cvs server: Diffing util2/pvlook.dir cvs server: Diffing util2/scale.dir cvs server: Diffing util2/sndinfo sh-2.05b$ Richard Dobson |
Date | 2003-10-01 12:19 |
From | ramsdell@mitre.org (John D. Ramsdell) |
Subject | [CSOUND-DEV:3107] RE: Read-only files in Windows |
Bad John. I just noticed the existence of the file ChangeLog that I have failed to use. I've added notes describing the accumulation of the changes I've made so far, with the exception of eliminating stray carriage returns in fgens.c and dnoise.c. 2003-10-01 John D. Ramsdell |
Date | 2003-10-01 13:08 |
From | Richard Dobson |
Subject | [CSOUND-DEV:3108] RE: Read-only files in Windows |
Thee macros are not used where a C or C++ construction would be better from a purist programming-aesthetic point of view, they are there to deal with cross-platform and cross-compiler differences, which is an entirely different problem. The only alternative is to use alternative versions of the same file, for different platforms and different compilers. We already do this in some cases - for graphics and audio support, for example, and can probably do more, as you hint (e.g dump mididevice.c and move to PortMidi); but where the differences are relativly slight, it seems preferable to have just the one file, with a few #ifdefs, than multiple versions of the same file, with only a few differences between them. In the majority of cases, we don't need to modify the preprocessor-dependent code, but only the common code. Richard Dobson John D. Ramsdell wrote: >>... You may have noticed that Java > provides no preprocessor, and C++ provides features that greatly > reduce the need for a preprocessor. I think this is an example of why > language designers are moving away from preprocessors. Another > example is mididevice.c. Who knows what that code does? > |
Date | 2003-10-02 11:45 |
From | ramsdell@mitre.org (John D. Ramsdell) |
Subject | [CSOUND-DEV:3109] RE: Read-only files in Windows |
Richard Dobson |