1
0
Fork 0
forked from len0rd/rockbox

Make open() posix compliant api-wise. A few calls (those with O_CREAT) need the additional optional mode parameter so add it. Impact for the core is almost zero, as open() is a wrapper macro for the real open function which doesn't take the variable parameter.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25844 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Thomas Martitz 2010-05-06 17:35:13 +00:00
parent c61e89c0ed
commit 0a1d7c28b7
76 changed files with 179 additions and 122 deletions

View file

@ -259,7 +259,7 @@ static bool add_bookmark(const char* bookmark_file_name, const char* bookmark,
snprintf(global_temp_buffer, sizeof(global_temp_buffer), snprintf(global_temp_buffer, sizeof(global_temp_buffer),
"%s.tmp", bookmark_file_name); "%s.tmp", bookmark_file_name);
temp_bookmark_file = open(global_temp_buffer, temp_bookmark_file = open(global_temp_buffer,
O_WRONLY | O_CREAT | O_TRUNC); O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (temp_bookmark_file < 0) if (temp_bookmark_file < 0)
return false; /* can't open the temp file */ return false; /* can't open the temp file */
@ -814,7 +814,7 @@ static bool delete_bookmark(const char* bookmark_file_name, int bookmark_id)
snprintf(global_temp_buffer, sizeof(global_temp_buffer), snprintf(global_temp_buffer, sizeof(global_temp_buffer),
"%s.tmp", bookmark_file_name); "%s.tmp", bookmark_file_name);
temp_bookmark_file = open(global_temp_buffer, temp_bookmark_file = open(global_temp_buffer,
O_WRONLY | O_CREAT | O_TRUNC); O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (temp_bookmark_file < 0) if (temp_bookmark_file < 0)
return false; /* can't open the temp file */ return false; /* can't open the temp file */

View file

@ -73,6 +73,26 @@ size_t codec_size;
extern void* plugin_get_audio_buffer(size_t *buffer_size); extern void* plugin_get_audio_buffer(size_t *buffer_size);
#undef open
static int open(const char* pathname, int flags, ...)
{
#ifdef SIMULATOR
int fd;
if (flags & O_CREAT)
{
va_list ap;
va_start(ap, flags);
fd = sim_open(pathname, flags, va_arg(ap, mode_t));
va_end(ap);
}
else
fd = sim_open(pathname, flags);
return fd;
#else
return file_open(pathname, flags);
#endif
}
struct codec_api ci = { struct codec_api ci = {
0, /* filesize */ 0, /* filesize */

View file

@ -222,7 +222,7 @@ struct codec_api {
size_t (*enc_unget_pcm_data)(size_t size); size_t (*enc_unget_pcm_data)(size_t size);
/* file */ /* file */
int (*open)(const char* pathname, int flags); int (*open)(const char* pathname, int flags, ...);
int (*close)(int fd); int (*close)(int fd);
ssize_t (*read)(int fd, void* buf, size_t count); ssize_t (*read)(int fd, void* buf, size_t count);
off_t (*lseek)(int fd, off_t offset, int whence); off_t (*lseek)(int fd, off_t offset, int whence);

View file

@ -136,7 +136,7 @@ static bool on_start_file(struct enc_file_event_data *data)
if ((data->chunk->flags & CHUNKF_ERROR) || *data->filename == '\0') if ((data->chunk->flags & CHUNKF_ERROR) || *data->filename == '\0')
return false; return false;
data->rec_file = ci->open(data->filename, O_RDWR|O_CREAT|O_TRUNC); data->rec_file = ci->open(data->filename, O_RDWR|O_CREAT|O_TRUNC, 0666);
if (data->rec_file < 0) if (data->rec_file < 0)
return false; return false;

View file

@ -171,7 +171,7 @@ int main(int argc, char *argv[])
/* output raw audio frames that are sent to the decoder into separate files */ /* output raw audio frames that are sent to the decoder into separate files */
#ifdef DUMP_RAW_FRAMES #ifdef DUMP_RAW_FRAMES
snprintf(filename,sizeof(filename),"dump%d.raw",++x); snprintf(filename,sizeof(filename),"dump%d.raw",++x);
fd_out = open(filename,O_WRONLY|O_CREAT|O_APPEND); fd_out = open(filename,O_WRONLY|O_CREAT|O_APPEND, 0666);
write(fd_out,pkt.frames[i],sps); write(fd_out,pkt.frames[i],sps);
close(fd_out); close(fd_out);
#endif #endif

View file

@ -62,7 +62,7 @@ static unsigned char wav_header[44]={
int open_wav(char* filename) { int open_wav(char* filename) {
int fd; int fd;
fd=open(filename,O_CREAT|O_WRONLY|O_TRUNC,S_IRUSR|S_IWUSR); fd=open(filename,O_CREAT|O_WRONLY|O_TRUNC, S_IRUSR|S_IWUSR);
if (fd >= 0) { if (fd >= 0) {
if (write(fd,wav_header,sizeof(wav_header)) < sizeof(wav_header)) { if (write(fd,wav_header,sizeof(wav_header)) < sizeof(wav_header)) {
fprintf(stderr,"[ERR} Failed to write wav header\n"); fprintf(stderr,"[ERR} Failed to write wav header\n");

View file

@ -45,7 +45,7 @@ void reset_profile_timers(void)
void print_timers(char * path) void print_timers(char * path)
{ {
int logfd = ci->open("/spclog.txt",O_WRONLY|O_CREAT|O_APPEND); int logfd = ci->open("/spclog.txt",O_WRONLY|O_CREAT|O_APPEND, 0666);
ci->fdprintf(logfd,"%s:\t",path); ci->fdprintf(logfd,"%s:\t",path);
ci->fdprintf(logfd,"%10ld total\t",READ_TIMER(total)); ci->fdprintf(logfd,"%10ld total\t",READ_TIMER(total));
PRINT_TIMER_PCT(render,total,"render"); PRINT_TIMER_PCT(render,total,"render");

View file

@ -2434,7 +2434,7 @@ static bool on_start_file(struct enc_file_event_data *data)
if ((data->chunk->flags & CHUNKF_ERROR) || *data->filename == '\0') if ((data->chunk->flags & CHUNKF_ERROR) || *data->filename == '\0')
return false; return false;
data->rec_file = ci->open(data->filename, O_RDWR|O_CREAT|O_TRUNC); data->rec_file = ci->open(data->filename, O_RDWR|O_CREAT|O_TRUNC, 0666);
if (data->rec_file < 0) if (data->rec_file < 0)
return false; return false;

View file

@ -98,7 +98,7 @@ void reset_profile_timers(void) {
int logfd=-1; int logfd=-1;
void print_timers(char * path, int track) { void print_timers(char * path, int track) {
logfd = ci->open("/nsflog.txt",O_WRONLY|O_CREAT|O_APPEND); logfd = ci->open("/nsflog.txt",O_WRONLY|O_CREAT|O_APPEND, 0666);
ci->fdprintf(logfd,"%s[%d]:\t",path,track); ci->fdprintf(logfd,"%s[%d]:\t",path,track);
ci->fdprintf(logfd,"%10ld total\t",READ_TIMER(total)); ci->fdprintf(logfd,"%10ld total\t",READ_TIMER(total));
PRINT_TIMER_PCT(cpu,total,"CPU"); PRINT_TIMER_PCT(cpu,total,"CPU");

View file

@ -122,7 +122,7 @@ static bool on_start_file(struct enc_file_event_data *data)
if ((data->chunk->flags & CHUNKF_ERROR) || *data->filename == '\0') if ((data->chunk->flags & CHUNKF_ERROR) || *data->filename == '\0')
return false; return false;
data->rec_file = ci->open(data->filename, O_RDWR|O_CREAT|O_TRUNC); data->rec_file = ci->open(data->filename, O_RDWR|O_CREAT|O_TRUNC, 0666);
if (data->rec_file < 0) if (data->rec_file < 0)
return false; return false;

View file

@ -227,7 +227,7 @@ static bool on_start_file(struct enc_file_event_data *data)
if ((data->chunk->flags & CHUNKF_ERROR) || *data->filename == '\0') if ((data->chunk->flags & CHUNKF_ERROR) || *data->filename == '\0')
return false; return false;
data->rec_file = ci->open(data->filename, O_RDWR|O_CREAT|O_TRUNC); data->rec_file = ci->open(data->filename, O_RDWR|O_CREAT|O_TRUNC, 0666);
if (data->rec_file < 0) if (data->rec_file < 0)
return false; return false;

View file

@ -233,7 +233,7 @@ bool logfdump(void)
/* nothing is logged just yet */ /* nothing is logged just yet */
return false; return false;
fd = open(ROCKBOX_DIR "/logf.txt", O_CREAT|O_WRONLY|O_TRUNC); fd = open(ROCKBOX_DIR "/logf.txt", O_CREAT|O_WRONLY|O_TRUNC, 0666);
if(-1 != fd) { if(-1 != fd) {
int i; int i;

View file

@ -1923,7 +1923,7 @@ static void mpeg_thread(void)
if (mpeg_file < 0) /* delayed file open */ if (mpeg_file < 0) /* delayed file open */
{ {
mpeg_file = open(delayed_filename, O_WRONLY|O_CREAT); mpeg_file = open(delayed_filename, O_WRONLY|O_CREAT, 0666);
if (mpeg_file < 0) if (mpeg_file < 0)
panicf("recfile: %d", mpeg_file); panicf("recfile: %d", mpeg_file);

View file

@ -336,7 +336,7 @@ static void new_playlist(struct playlist_info* playlist, const char *dir,
static void create_control(struct playlist_info* playlist) static void create_control(struct playlist_info* playlist)
{ {
playlist->control_fd = open(playlist->control_filename, playlist->control_fd = open(playlist->control_filename,
O_CREAT|O_RDWR|O_TRUNC); O_CREAT|O_RDWR|O_TRUNC, 0666);
if (playlist->control_fd < 0) if (playlist->control_fd < 0)
{ {
if (check_rockboxdir()) if (check_rockboxdir())
@ -414,7 +414,7 @@ static int recreate_control(struct playlist_info* playlist)
return -1; return -1;
playlist->control_fd = open(playlist->control_filename, playlist->control_fd = open(playlist->control_filename,
O_CREAT|O_RDWR|O_TRUNC); O_CREAT|O_RDWR|O_TRUNC, 0666);
if (playlist->control_fd < 0) if (playlist->control_fd < 0)
return -1; return -1;
@ -3375,7 +3375,7 @@ int playlist_save(struct playlist_info* playlist, char *filename)
else else
{ {
/* some applications require a BOM to read the file properly */ /* some applications require a BOM to read the file properly */
fd = open(path, O_CREAT|O_WRONLY|O_TRUNC); fd = open(path, O_CREAT|O_WRONLY|O_TRUNC, 0666);
} }
if (fd < 0) if (fd < 0)
{ {

View file

@ -349,7 +349,7 @@ static int add_to_playlist(const char* playlist, bool new_playlist,
if (new_playlist) if (new_playlist)
fd = open_utf8(playlist, O_CREAT|O_WRONLY|O_TRUNC); fd = open_utf8(playlist, O_CREAT|O_WRONLY|O_TRUNC);
else else
fd = open(playlist, O_CREAT|O_WRONLY|O_APPEND); fd = open(playlist, O_CREAT|O_WRONLY|O_APPEND, 0666);
if(fd < 0) if(fd < 0)
return result; return result;

View file

@ -93,9 +93,9 @@ static char current_plugin[MAX_PATH];
char *plugin_get_current_filename(void); char *plugin_get_current_filename(void);
#ifdef HAVE_PLUGIN_CHECK_OPEN_CLOSE
/* Some wrappers used to monitor open and close and detect leaks*/ /* Some wrappers used to monitor open and close and detect leaks*/
static int open_wrapper(const char* pathname, int flags); static int open_wrapper(const char* pathname, int flags, ...);
#ifdef HAVE_PLUGIN_CHECK_OPEN_CLOSE
static int close_wrapper(int fd); static int close_wrapper(int fd);
static int creat_wrapper(const char *pathname, mode_t mode); static int creat_wrapper(const char *pathname, mode_t mode);
#endif #endif
@ -299,13 +299,12 @@ static const struct plugin_api rockbox_api = {
/* file */ /* file */
open_utf8, open_utf8,
#ifdef HAVE_PLUGIN_CHECK_OPEN_CLOSE
(open_func)open_wrapper, (open_func)open_wrapper,
#ifdef HAVE_PLUGIN_CHECK_OPEN_CLOSE
close_wrapper, close_wrapper,
#else #else
(open_func)PREFIX(open),
PREFIX(close), PREFIX(close),
#endif #endif
(read_func)PREFIX(read), (read_func)PREFIX(read),
PREFIX(lseek), PREFIX(lseek),
#ifdef HAVE_PLUGIN_CHECK_OPEN_CLOSE #ifdef HAVE_PLUGIN_CHECK_OPEN_CLOSE
@ -979,17 +978,34 @@ char *plugin_get_current_filename(void)
return current_plugin; return current_plugin;
} }
#ifdef HAVE_PLUGIN_CHECK_OPEN_CLOSE static int open_wrapper(const char* pathname, int flags, ...)
static int open_wrapper(const char* pathname, int flags)
{ {
int fd = PREFIX(open)(pathname,flags); /* we don't have an 'open' function. it's a define. and we need
* the real file_open, hence PREFIX() doesn't work here */
int fd;
#ifdef SIMULATOR
if (flags & O_CREAT)
{
va_list ap;
va_start(ap, flags);
int fd;
fd = sim_open(pathname, flags, va_arg(ap, mode_t));
va_end(ap);
}
else
fd = sim_open(pathname, flags);
#else
fd = file_open(pathname,flags);
#endif
#ifdef HAVE_PLUGIN_CHECK_OPEN_CLOSE
if(fd >= 0) if(fd >= 0)
open_files |= 1<<fd; open_files |= 1<<fd;
#endif
return fd; return fd;
} }
#ifdef HAVE_PLUGIN_CHECK_OPEN_CLOSE
static int close_wrapper(int fd) static int close_wrapper(int fd)
{ {
if((~open_files) & (1<<fd)) if((~open_files) & (1<<fd))

View file

@ -397,7 +397,7 @@ struct plugin_api {
/* file */ /* file */
int (*open_utf8)(const char* pathname, int flags); int (*open_utf8)(const char* pathname, int flags);
int (*open)(const char* pathname, int flags); int (*open)(const char* pathname, int flags, ...);
int (*close)(int fd); int (*close)(int fd);
ssize_t (*read)(int fd, void* buf, size_t count); ssize_t (*read)(int fd, void* buf, size_t count);
off_t (*lseek)(int fd, off_t offset, int whence); off_t (*lseek)(int fd, off_t offset, int whence);

View file

@ -336,7 +336,7 @@ static void flush_buffer(void* data)
if (in_usb_mode || (buf_idx == 0)) if (in_usb_mode || (buf_idx == 0))
return; return;
fd = rb->open(BATTERY_LOG, O_RDWR | O_CREAT | O_APPEND); fd = rb->open(BATTERY_LOG, O_RDWR | O_CREAT | O_APPEND, 0666);
if (fd < 0) if (fd < 0)
return; return;
@ -446,7 +446,7 @@ void thread(void)
rb->unregister_storage_idle_func(flush_buffer, true); rb->unregister_storage_idle_func(flush_buffer, true);
/* log end of bench and exit reason */ /* log end of bench and exit reason */
fd = rb->open(BATTERY_LOG, O_RDWR | O_CREAT | O_APPEND); fd = rb->open(BATTERY_LOG, O_RDWR | O_CREAT | O_APPEND, 0666);
if (fd >= 0) if (fd >= 0)
{ {
rb->fdprintf(fd, "--Battery bench ended, reason: %s--\n", exit_reason); rb->fdprintf(fd, "--Battery bench ended, reason: %s--\n", exit_reason);
@ -525,7 +525,7 @@ int main(void)
fd = rb->open(BATTERY_LOG, O_RDONLY); fd = rb->open(BATTERY_LOG, O_RDONLY);
if (fd < 0) if (fd < 0)
{ {
fd = rb->open(BATTERY_LOG, O_RDWR | O_CREAT); fd = rb->open(BATTERY_LOG, O_RDWR | O_CREAT, 0666);
if (fd >= 0) if (fd >= 0)
{ {
rb->fdprintf(fd, rb->fdprintf(fd,

View file

@ -871,7 +871,7 @@ static void blackjack_savegame(struct game_context* bj) {
if(!resume) if(!resume)
return; return;
/* write out the game state to the save file */ /* write out the game state to the save file */
fd = rb->open(SAVE_FILE, O_WRONLY|O_CREAT); fd = rb->open(SAVE_FILE, O_WRONLY|O_CREAT, 0666);
if(fd < 0) if(fd < 0)
return; return;
rb->write(fd, bj, sizeof(struct game_context)); rb->write(fd, bj, sizeof(struct game_context));

View file

@ -1265,7 +1265,7 @@ static void brickmania_savegame(void)
int fd; int fd;
/* write out the game state to the save file */ /* write out the game state to the save file */
fd = rb->open(SAVE_FILE, O_WRONLY|O_CREAT); fd = rb->open(SAVE_FILE, O_WRONLY|O_CREAT, 0666);
if(fd < 0) return; if(fd < 0) return;
if ((rb->write(fd, &pad_pos_x, sizeof(pad_pos_x)) <= 0) || if ((rb->write(fd, &pad_pos_x, sizeof(pad_pos_x)) <= 0) ||

View file

@ -2212,7 +2212,7 @@ static void bubbles_savedata(void) {
if (last_highlevel >= highlevel) /* no need to save */ if (last_highlevel >= highlevel) /* no need to save */
return; return;
fd = rb->open(DATA_FILE, O_WRONLY|O_CREAT); fd = rb->open(DATA_FILE, O_WRONLY|O_CREAT, 0666);
if (fd < 0) return; if (fd < 0) return;
rb->write(fd, &highlevel, sizeof(highlevel)); rb->write(fd, &highlevel, sizeof(highlevel));
@ -2252,7 +2252,7 @@ static void bubbles_savegame(struct game_context* bb) {
if (!resume) /* nothing to save */ if (!resume) /* nothing to save */
return; return;
/* write out the game state to the save file */ /* write out the game state to the save file */
fd = rb->open(SAVE_FILE, O_WRONLY|O_CREAT); fd = rb->open(SAVE_FILE, O_WRONLY|O_CREAT, 0666);
if (fd < 0) if (fd < 0)
{ {
rb->splash(HZ/2, "Failed to save game"); rb->splash(HZ/2, "Failed to save game");

View file

@ -611,7 +611,7 @@ static bool save_memo(int changed, bool new_mod, struct shown *shown)
{ {
int fp, fq; int fp, fq;
/* use O_RDWR|O_CREAT so that file is created if it doesn't exist. */ /* use O_RDWR|O_CREAT so that file is created if it doesn't exist. */
fp = rb->open(MEMO_FILE, O_RDWR|O_CREAT); fp = rb->open(MEMO_FILE, O_RDWR|O_CREAT, 0666);
fq = rb->creat(TEMP_FILE, 0666); fq = rb->creat(TEMP_FILE, 0666);
if ( (fq > -1) && (fp > -1) ) if ( (fq > -1) && (fp > -1) )
{ {

View file

@ -275,7 +275,7 @@ void cb_saveposition ( void ) {
rb->splash ( 0 , "Saving position" ); rb->splash ( 0 , "Saving position" );
fd = rb->open(SAVE_FILE, O_WRONLY|O_CREAT); fd = rb->open(SAVE_FILE, O_WRONLY|O_CREAT, 0666);
computer++; rb->write(fd, &(computer), sizeof(computer)); computer--; computer++; rb->write(fd, &(computer), sizeof(computer)); computer--;
opponent++; rb->write(fd, &(opponent), sizeof(opponent)); opponent--; opponent++; rb->write(fd, &(opponent), sizeof(opponent)); opponent--;

View file

@ -670,7 +670,7 @@ void pgn_parse_game(const char* filename,
rb->read_line(fhandler, line_buffer, sizeof line_buffer); rb->read_line(fhandler, line_buffer, sizeof line_buffer);
} }
loghandler = rb->open(LOG_FILE, O_WRONLY | O_CREAT); loghandler = rb->open(LOG_FILE, O_WRONLY | O_CREAT, 0666);
GNUChess_Initialize(); GNUChess_Initialize();
@ -829,7 +829,7 @@ void pgn_store_game(struct pgn_game_node* game){
ply_count++; ply_count++;
} }
fhandler = rb->open(PGN_FILE, O_WRONLY|O_CREAT|O_APPEND); fhandler = rb->open(PGN_FILE, O_WRONLY|O_CREAT|O_APPEND, 0666);
/* the first 7 tags are mandatory according to the PGN specification so we /* the first 7 tags are mandatory according to the PGN specification so we

View file

@ -246,7 +246,7 @@ enum plugin_status plugin_start(const void* parameter)
memcpy(buf + 1, "nn2x", 4); memcpy(buf + 1, "nn2x", 4);
/* 4 - Write to disk */ /* 4 - Write to disk */
fd = rb->open(outputfilename,O_WRONLY|O_CREAT|O_TRUNC); fd = rb->open(outputfilename,O_WRONLY|O_CREAT|O_TRUNC, 0666);
if (fd < 0) { if (fd < 0) {
rb->splash(HZ*2, "Could not open output file"); rb->splash(HZ*2, "Could not open output file");
@ -307,7 +307,7 @@ enum plugin_status plugin_start(const void* parameter)
memcpy(buf + 1, "nn2g", 4); memcpy(buf + 1, "nn2g", 4);
/* 4 - Write to disk */ /* 4 - Write to disk */
fd = rb->open(outputfilename,O_WRONLY|O_CREAT|O_TRUNC); fd = rb->open(outputfilename,O_WRONLY|O_CREAT|O_TRUNC, 0666);
if (fd < 0) { if (fd < 0) {
rb->splash(HZ*2, "Could not open output file"); rb->splash(HZ*2, "Could not open output file");

View file

@ -63,13 +63,20 @@ int fileexists(const char * fname)
} }
#ifndef SIMULATOR #ifndef SIMULATOR
int my_open(const char *file, int flags) int my_open(const char *file, int flags, ...)
{ {
if(fpoint==8) if(fpoint==8)
return -1; return -1;
#undef open #undef open
if (flags & O_CREAT)
{
va_list ap;
va_start(ap, flags);
filearray[fpoint]=rb->open(file, flags, va_arg(ap, mode_t));
va_end(ap);
}
else
filearray[fpoint]=rb->open(file, flags); filearray[fpoint]=rb->open(file, flags);
if(filearray[fpoint]<0) if(filearray[fpoint]<0)
return filearray[fpoint]; return filearray[fpoint];

View file

@ -39,12 +39,12 @@ char *my_strtok( char * s, const char * delim );
#define read_line(a,b,c) rb->read_line((a),(b),(c)) #define read_line(a,b,c) rb->read_line((a),(b),(c))
#ifdef SIMULATOR #ifdef SIMULATOR
#define open(a,b) rb->open((a),(b)) #define open(a, ...) rb->open((a), __VA_ARGS__)
#define close(a) rb->close((a)) #define close(a) rb->close((a))
#else #else
int my_open(const char *file, int flags); int my_open(const char *file, int flags, ...);
int my_close(int id); int my_close(int id);
#define open(a,b) my_open((a),(b)) #define open(a, ...) my_open((a), __VA_ARGS__)
#define close(a) my_close((a)) #define close(a) my_close((a))
#endif #endif

View file

@ -837,7 +837,7 @@ void z_save (void)
/* Open auxilary file */ /* Open auxilary file */
if ((gfp = rb->open (new_name, O_WRONLY|O_CREAT|O_TRUNC)) < 0) if ((gfp = rb->open (new_name, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0)
goto finished; goto finished;
/* Write auxilary file */ /* Write auxilary file */
@ -859,7 +859,7 @@ void z_save (void)
/* Open game file */ /* Open game file */
if ((gfp = rb->open (new_name, O_WRONLY|O_CREAT|O_TRUNC)) < 0) if ((gfp = rb->open (new_name, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0)
goto finished; goto finished;
success = save_quetzal (gfp, story_fp); success = save_quetzal (gfp, story_fp);

View file

@ -74,7 +74,7 @@ void script_open (void)
/* Opening in "at" mode doesn't work for script_erase_input... */ /* Opening in "at" mode doesn't work for script_erase_input... */
if ((sfp = rb->open (script_name, O_RDWR|O_CREAT)) != -1) { if ((sfp = rb->open (script_name, O_RDWR|O_CREAT, 0666)) != -1) {
fseek (sfp, 0, SEEK_END); fseek (sfp, 0, SEEK_END);
@ -290,7 +290,7 @@ void record_open (void)
strcpy (command_name, new_name); strcpy (command_name, new_name);
if ((rfp = rb->open (new_name, O_WRONLY|O_CREAT|O_TRUNC)) != -1) if ((rfp = rb->open (new_name, O_WRONLY|O_CREAT|O_TRUNC, 0666)) != -1)
ostream_record = TRUE; ostream_record = TRUE;
else else
print_string ("Cannot open file\n"); print_string ("Cannot open file\n");

View file

@ -498,7 +498,7 @@ static void jewels_savegame(struct game_context* bj)
{ {
int fd; int fd;
/* write out the game state to the save file */ /* write out the game state to the save file */
fd = rb->open(SAVE_FILE, O_WRONLY|O_CREAT); fd = rb->open(SAVE_FILE, O_WRONLY|O_CREAT, 0666);
if(fd < 0) return; if(fd < 0) return;
rb->write(fd, &bj->tmp_type, sizeof(bj->tmp_type)); rb->write(fd, &bj->tmp_type, sizeof(bj->tmp_type));

View file

@ -584,7 +584,7 @@ static int keybox(void)
if (data_changed) if (data_changed)
{ {
fd = rb->open(KEYBOX_FILE, O_WRONLY | O_CREAT | O_TRUNC); fd = rb->open(KEYBOX_FILE, O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (fd < 0) if (fd < 0)
return FILE_OPEN_ERROR; return FILE_OPEN_ERROR;
write_output(fd); write_output(fd);

View file

@ -33,7 +33,7 @@ int highscore_save(char *filename, struct highscore *scores, int num_scores)
if(!highscore_updated) if(!highscore_updated)
return 1; return 1;
fd = rb->open(filename, O_WRONLY|O_CREAT); fd = rb->open(filename, O_WRONLY|O_CREAT, 0666);
if(fd < 0) if(fd < 0)
return -1; return -1;

View file

@ -158,7 +158,7 @@ static int io_open (lua_State *L) {
} }
if((*mode == 'w' || *mode == 'a') && !rb->file_exists(filename)) if((*mode == 'w' || *mode == 'a') && !rb->file_exists(filename))
flags |= O_CREAT; flags |= O_CREAT;
*pf = rb->open(filename, flags); *pf = rb->open(filename, flags, 0666);
return (*pf < 0) ? pushresult(L, 0, filename) : 1; return (*pf < 0) ? pushresult(L, 0, filename) : 1;
} }

View file

@ -246,7 +246,7 @@ enum plugin_status plugin_start(const void* parameter)
done = 0; done = 0;
action( out, arg ); action( out, arg );
out = rb->open( filename, O_WRONLY|O_CREAT|O_TRUNC ); out = rb->open( filename, O_WRONLY|O_CREAT|O_TRUNC , 0666);
if( out < 0 ) return PLUGIN_ERROR; if( out < 0 ) return PLUGIN_ERROR;
action( out, arg ); action( out, arg );
rb->close( out ); rb->close( out );

View file

@ -2598,7 +2598,7 @@ enum plugin_status plugin_start(const void* parameter)
{ {
init_mp3_encoder_engine(true, brate[srat], cfg.samplerate); init_mp3_encoder_engine(true, brate[srat], cfg.samplerate);
get_mp3_filename(wav_filename); get_mp3_filename(wav_filename);
mp3file = rb->open(mp3_name , O_WRONLY|O_CREAT|O_TRUNC); mp3file = rb->open(mp3_name , O_WRONLY|O_CREAT|O_TRUNC, 0666);
frames = 0; frames = 0;
tim = *rb->current_tick; tim = *rb->current_tick;

View file

@ -91,11 +91,7 @@ static void sfwrite_open(t_sfwrite *x,t_symbol *filename)
sfwrite_close(x); sfwrite_close(x);
#ifdef ROCKBOX
if ((x->x_file = open(fname, O_RDWR | O_CREAT)) < 0)
#else
if ((x->x_file = open(fname,O_RDWR | O_CREAT,0664)) < 0) if ((x->x_file = open(fname,O_RDWR | O_CREAT,0664)) < 0)
#endif
{ {
error("can't create %s",fname); error("can't create %s",fname);
return; return;

View file

@ -1306,7 +1306,7 @@ static void garray_write(t_garray *x, t_symbol *filename)
buf, MAXPDSTRING); buf, MAXPDSTRING);
sys_bashfilename(buf, buf); sys_bashfilename(buf, buf);
#ifdef ROCKBOX #ifdef ROCKBOX
if(!(fd = open(buf, O_WRONLY|O_CREAT|O_TRUNC))) if(!(fd = open(buf, O_WRONLY|O_CREAT|O_TRUNC, 0666)))
#else #else
if (!(fd = fopen(buf, "w"))) if (!(fd = fopen(buf, "w")))
#endif #endif
@ -1388,7 +1388,7 @@ static void garray_write16(t_garray *x, t_symbol *filename, t_symbol *format)
buf2, MAXPDSTRING); buf2, MAXPDSTRING);
sys_bashfilename(buf2, buf2); sys_bashfilename(buf2, buf2);
#ifdef ROCKBOX #ifdef ROCKBOX
if(!(fd = open(buf2, O_WRONLY|O_CREAT|O_TRUNC))) if(!(fd = open(buf2, O_WRONLY|O_CREAT|O_TRUNC, 0666)))
#else #else
if (!(fd = fopen(buf2, BINWRITEMODE))) if (!(fd = fopen(buf2, BINWRITEMODE)))
#endif #endif

View file

@ -214,7 +214,7 @@ void generate(void)
{ {
dirs_count = 0; dirs_count = 0;
abort = false; abort = false;
fd = rb->open(RFA_FILE,O_CREAT|O_WRONLY); fd = rb->open(RFA_FILE,O_CREAT|O_WRONLY, 0666);
rb->write(fd,&dirs_count,sizeof(int)); rb->write(fd,&dirs_count,sizeof(int));
if (fd < 0) if (fd < 0)
{ {

View file

@ -877,7 +877,7 @@ static void dump_resume(void)
{ {
int fd; int fd;
fd = rb->open(RESUME_FILE, O_WRONLY|O_CREAT); fd = rb->open(RESUME_FILE, O_WRONLY|O_CREAT, 0666);
if (fd < 0) if (fd < 0)
goto fail; goto fail;

View file

@ -947,7 +947,7 @@ next:
int fd; int fd;
blockcount++; blockcount++;
snprintf(meow,499,"/dyna_0x%x_run.rb",PC); snprintf(meow,499,"/dyna_0x%x_run.rb",PC);
fd=open(meow,O_WRONLY|O_CREAT|O_TRUNC); fd=open(meow,O_WRONLY|O_CREAT|O_TRUNC, 0666);
if(fd>=0) if(fd>=0)
{ {
fdprintf(fd,"Block 0x%x Blockcount: %d\n",PC,blockcount); fdprintf(fd,"Block 0x%x Blockcount: %d\n",PC,blockcount);

View file

@ -425,7 +425,7 @@ void dynamic_recompile (struct dynarec_block *newblock)
newblock->block=dynapointer; newblock->block=dynapointer;
#ifdef DYNA_DEBUG #ifdef DYNA_DEBUG
snprintf(meow,499,"/dyna_0x%x_asm.rb",PC); snprintf(meow,499,"/dyna_0x%x_asm.rb",PC);
fd=open(meow,O_WRONLY|O_CREAT|O_TRUNC); fd=open(meow,O_WRONLY|O_CREAT|O_TRUNC, 0666);
if(fd<0) if(fd<0)
{ {
die("couldn't open dyna debug file"); die("couldn't open dyna debug file");
@ -1907,7 +1907,7 @@ void dynamic_recompile (struct dynarec_block *newblock)
newblock->length=dynapointer-newblock->block; newblock->length=dynapointer-newblock->block;
IF_COP(rb->cpucache_invalidate()); IF_COP(rb->cpucache_invalidate());
snprintf(meow,499,"/dyna_0x%x_code.rb",PC); snprintf(meow,499,"/dyna_0x%x_code.rb",PC);
fd=open(meow,O_WRONLY|O_CREAT|O_TRUNC); fd=open(meow,O_WRONLY|O_CREAT|O_TRUNC, 0666);
if(fd>=0) if(fd>=0)
{ {
write(fd,newblock->block,newblock->length); write(fd,newblock->block,newblock->length);

View file

@ -249,7 +249,7 @@ static int sram_save(void)
/* If we crash before we ever loaded sram, DO NOT SAVE! */ /* If we crash before we ever loaded sram, DO NOT SAVE! */
if (!mbc.batt || !ram.loaded || !mbc.ramsize) if (!mbc.batt || !ram.loaded || !mbc.ramsize)
return -1; return -1;
fd = open(sramfile, O_WRONLY|O_CREAT|O_TRUNC); fd = open(sramfile, O_WRONLY|O_CREAT|O_TRUNC, 0666);
if (fd<0) return -1; if (fd<0) return -1;
snprintf(meow,499,"Saving savedata to %s",sramfile); snprintf(meow,499,"Saving savedata to %s",sramfile);
rb->splash(HZ*2, meow); rb->splash(HZ*2, meow);
@ -263,7 +263,7 @@ static void rtc_save(void)
{ {
int fd; int fd;
if (!rtc.batt) return; if (!rtc.batt) return;
if ((fd = open(rtcfile, O_WRONLY|O_CREAT|O_TRUNC))<0) return; if ((fd = open(rtcfile, O_WRONLY|O_CREAT|O_TRUNC, 0666))<0) return;
rtc_save_internal(fd); rtc_save_internal(fd);
close(fd); close(fd);
} }

View file

@ -178,7 +178,7 @@ static bool do_file(char *path, char *desc, bool is_load) {
file_mode = is_load ? O_RDONLY : (O_WRONLY | O_CREAT); file_mode = is_load ? O_RDONLY : (O_WRONLY | O_CREAT);
/* attempt to open file descriptor here */ /* attempt to open file descriptor here */
if ((fd = open(path, file_mode)) < 0) if ((fd = open(path, file_mode, 0666)) < 0)
return false; return false;
/* load/save state */ /* load/save state */

View file

@ -325,7 +325,7 @@ static void savesettings(void)
{ {
options.dirty=0; options.dirty=0;
snprintf(optionsave, sizeof(optionsave), "%s/%s", savedir, optionname); snprintf(optionsave, sizeof(optionsave), "%s/%s", savedir, optionname);
fd = open(optionsave, O_WRONLY|O_CREAT|O_TRUNC); fd = open(optionsave, O_WRONLY|O_CREAT|O_TRUNC, 0666);
write(fd,&options, sizeof(options)); write(fd,&options, sizeof(options));
close(fd); close(fd);
} }

View file

@ -59,7 +59,9 @@ void dynamic_recompile (struct dynarec_block *newblock);
#define isalpha(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && ((c) <= 'Z'))) #define isalpha(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && ((c) <= 'Z')))
#define isalnum(c) (isdigit(c) || (isalpha(c))) #define isalnum(c) (isdigit(c) || (isalpha(c)))
#define open(a,b) rb->open((a),(b)) /* only 1 fixed argument for open, since variadic macros don't except empty
* variable parameters */
#define open(a, ...) rb->open((a), __VA_ARGS__)
#define lseek(a,b,c) rb->lseek((a),(b),(c)) #define lseek(a,b,c) rb->lseek((a),(b),(c))
#define close(a) rb->close((a)) #define close(a) rb->close((a))
#define read(a,b,c) rb->read((a),(b),(c)) #define read(a,b,c) rb->read((a),(b),(c))

View file

@ -123,7 +123,7 @@ static bool search_init(const char* file){
if (bomsize) if (bomsize)
fdw = rb->open_utf8(resultfile, O_WRONLY|O_CREAT|O_TRUNC); fdw = rb->open_utf8(resultfile, O_WRONLY|O_CREAT|O_TRUNC);
else else
fdw = rb->open(resultfile, O_WRONLY|O_CREAT|O_TRUNC); fdw = rb->open(resultfile, O_WRONLY|O_CREAT|O_TRUNC, 0666);
if (fdw < 0) { if (fdw < 0) {
#ifdef HAVE_LCD_BITMAP #ifdef HAVE_LCD_BITMAP

View file

@ -78,7 +78,7 @@ enum plugin_status plugin_start(const void* parameter)
rb->close(parsefd); rb->close(parsefd);
hits=0; hits=0;
if(result!=0) { if(result!=0) {
int fd=rb->open("/search.m3u", O_WRONLY|O_CREAT|O_TRUNC); int fd=rb->open("/search.m3u", O_WRONLY|O_CREAT|O_TRUNC, 0666);
int i; int i;
for(i=0;i<rb->tagdbheader->filecount;i++) for(i=0;i<rb->tagdbheader->filecount;i++)
if(result[i]) { if(result[i]) {

View file

@ -124,7 +124,7 @@ enum plugin_status plugin_start(
int fd; int fd;
(void)parameter; (void)parameter;
fd = rb->open(FILENAME, O_CREAT|O_TRUNC|O_WRONLY); fd = rb->open(FILENAME, O_CREAT|O_TRUNC|O_WRONLY, 0666);
if (fd < 0) if (fd < 0)
return PLUGIN_ERROR; return PLUGIN_ERROR;
list = rb->get_settings_list(&setting_count); list = rb->get_settings_list(&setting_count);

View file

@ -1117,7 +1117,7 @@ static bool save(char *filename, bool solution)
} }
if (filename[0] == '\0' || if (filename[0] == '\0' ||
(fd = rb->open(filename, O_WRONLY|O_CREAT|O_TRUNC)) < 0) { (fd = rb->open(filename, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0) {
rb->splashf(HZ*2, "Unable to open %s", filename); rb->splashf(HZ*2, "Unable to open %s", filename);
return false; return false;
} }

View file

@ -1272,7 +1272,7 @@ int open_save_file( int flags )
{ {
char buf[MAX_PATH]; char buf[MAX_PATH];
get_save_filename( buf ); get_save_filename( buf );
return rb->open( buf, flags ); return rb->open( buf, flags, 0666);
} }
void delete_save_file( void ) void delete_save_file( void )

View file

@ -147,7 +147,7 @@ static int write_file(void)
if (bomsize) if (bomsize)
fd = rb->open_utf8(tmpfilename, O_WRONLY|O_CREAT|O_TRUNC); fd = rb->open_utf8(tmpfilename, O_WRONLY|O_CREAT|O_TRUNC);
else else
fd = rb->open(tmpfilename, O_WRONLY|O_CREAT|O_TRUNC); fd = rb->open(tmpfilename, O_WRONLY|O_CREAT|O_TRUNC, 0666);
if(fd < 0) if(fd < 0)
return 10 * fd - 1; return 10 * fd - 1;

View file

@ -687,7 +687,7 @@ static int save(
/* write the file 1 */ /* write the file 1 */
if (file_name1 != NULL) if (file_name1 != NULL)
{ {
file1 = rb->open (file_name1, O_WRONLY | O_CREAT); file1 = rb->open (file_name1, O_WRONLY | O_CREAT, 0666);
if (file1 >= 0) if (file1 >= 0)
{ {
int rc = copy_file(file1, src_file, end, y*2 + 1, y -1); int rc = copy_file(file1, src_file, end, y*2 + 1, y -1);
@ -727,7 +727,7 @@ static int save(
if (file_name2 != NULL) if (file_name2 != NULL)
{ {
/* write file 2 */ /* write file 2 */
file2 = rb->open (file_name2, O_WRONLY | O_CREAT); file2 = rb->open (file_name2, O_WRONLY | O_CREAT, 0666);
if (file2 >= 0) if (file2 >= 0)
{ {
end = mp3->filesize - end; end = mp3->filesize - end;

View file

@ -358,7 +358,7 @@ void save_stopwatch(void)
{ {
int fd; int fd;
fd = rb->open(STOPWATCH_FILE, O_CREAT|O_WRONLY|O_TRUNC); fd = rb->open(STOPWATCH_FILE, O_CREAT|O_WRONLY|O_TRUNC, 0666);
if (fd < 0) if (fd < 0)
{ {

View file

@ -808,7 +808,7 @@ bool save_sudoku(struct sudoku_state_t* state)
return false; return false;
} }
fd=rb->open(state->filename, O_WRONLY|O_CREAT); fd=rb->open(state->filename, O_WRONLY|O_CREAT, 0666);
if (fd >= 0) { if (fd >= 0) {
for (r=0;r<9;r++) { for (r=0;r<9;r++) {
i=0; i=0;

View file

@ -626,7 +626,7 @@ int save_game(void) {
return -1; return -1;
} }
fd = rb->open(savepath, O_WRONLY|O_CREAT); fd = rb->open(savepath, O_WRONLY|O_CREAT, 0666);
DEBUGF("savepath: %s\n", savepath); DEBUGF("savepath: %s\n", savepath);
if(fd < 0) { if(fd < 0) {
DEBUGF("Couldn't create/open file\n"); DEBUGF("Couldn't create/open file\n");

View file

@ -59,7 +59,7 @@ static bool log_init(bool use_logfile)
if (use_logfile) { if (use_logfile) {
rb->create_numbered_filename(logfilename, "/", "test_codec_log_", ".txt", rb->create_numbered_filename(logfilename, "/", "test_codec_log_", ".txt",
2 IF_CNFN_NUM_(, NULL)); 2 IF_CNFN_NUM_(, NULL));
log_fd = rb->open(logfilename, O_RDWR|O_CREAT|O_TRUNC); log_fd = rb->open(logfilename, O_RDWR|O_CREAT|O_TRUNC, 0666);
return log_fd >= 0; return log_fd >= 0;
} }

View file

@ -85,7 +85,7 @@ static bool log_init(void)
rb->create_numbered_filename(logfilename, "/", "test_disk_log_", ".txt", rb->create_numbered_filename(logfilename, "/", "test_disk_log_", ".txt",
2 IF_CNFN_NUM_(, NULL)); 2 IF_CNFN_NUM_(, NULL));
log_fd = rb->open(logfilename, O_RDWR|O_CREAT|O_TRUNC); log_fd = rb->open(logfilename, O_RDWR|O_CREAT|O_TRUNC, 0666);
return log_fd >= 0; return log_fd >= 0;
} }

View file

@ -47,7 +47,7 @@ static int log_init(void)
rb->create_numbered_filename(logfilename, "/", "test_gfx_log_", ".txt", rb->create_numbered_filename(logfilename, "/", "test_gfx_log_", ".txt",
2 IF_CNFN_NUM_(, NULL)); 2 IF_CNFN_NUM_(, NULL));
fd = rb->open(logfilename, O_RDWR|O_CREAT|O_TRUNC); fd = rb->open(logfilename, O_RDWR|O_CREAT|O_TRUNC, 0666);
return fd; return fd;
} }

View file

@ -237,7 +237,7 @@ enum plugin_status plugin_start(const void* parameter)
case GREY_OK: case GREY_OK:
rb->create_numbered_filename(filename, "/", "test_grey_", rb->create_numbered_filename(filename, "/", "test_grey_",
".txt", 2 IF_CNFN_NUM_(, NULL)); ".txt", 2 IF_CNFN_NUM_(, NULL));
fd = rb->open(filename, O_RDWR|O_CREAT|O_TRUNC); fd = rb->open(filename, O_RDWR|O_CREAT|O_TRUNC, 0666);
if (fd >= 0) if (fd >= 0)
{ {
for (i = 0; i <= STEPS; i++) for (i = 0; i <= STEPS; i++)

View file

@ -180,7 +180,7 @@ bool save_changes(int overwrite)
} }
} }
fd = rb->open(filename,O_WRONLY|O_CREAT|O_TRUNC); fd = rb->open(filename,O_WRONLY|O_CREAT|O_TRUNC, 0666);
if (fd < 0) if (fd < 0)
{ {
newfile = true; newfile = true;

View file

@ -686,7 +686,7 @@ enum plugin_status plugin_start(const void* parameter)
case 0: case 0:
if(create_log) if(create_log)
{ {
log_fd = rb->open(LOG_FILENAME, O_WRONLY|O_CREAT|O_APPEND); log_fd = rb->open(LOG_FILENAME, O_WRONLY|O_CREAT|O_APPEND, 0666);
if(log_fd >= 0) if(log_fd >= 0)
rb->fdprintf(log_fd, "---- %s ----\n", title); rb->fdprintf(log_fd, "---- %s ----\n", title);
else else

View file

@ -2138,7 +2138,7 @@ static bool viewer_load_global_settings(void)
static bool viewer_save_global_settings(void) static bool viewer_save_global_settings(void)
{ {
int sfd = rb->open(GLOBAL_SETTINGS_TMP_FILE, O_WRONLY|O_CREAT|O_TRUNC); int sfd = rb->open(GLOBAL_SETTINGS_TMP_FILE, O_WRONLY|O_CREAT|O_TRUNC, 0666);
unsigned char buf[GLOBAL_SETTINGS_H_SIZE]; unsigned char buf[GLOBAL_SETTINGS_H_SIZE];
if (sfd < 0) if (sfd < 0)
@ -2219,7 +2219,7 @@ static bool viewer_convert_settings_file(void)
if ((sfd = rb->open(SETTINGS_FILE, O_RDONLY)) < 0) if ((sfd = rb->open(SETTINGS_FILE, O_RDONLY)) < 0)
return false; return false;
if ((tfd = rb->open(SETTINGS_TMP_FILE, O_WRONLY|O_CREAT|O_TRUNC)) < 0) if ((tfd = rb->open(SETTINGS_TMP_FILE, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0)
{ {
rb->close(sfd); rb->close(sfd);
return false; return false;
@ -2441,7 +2441,7 @@ static bool viewer_save_settings(void)
bookmarks[bookmark_count-1].flag = BOOKMARK_LAST; bookmarks[bookmark_count-1].flag = BOOKMARK_LAST;
} }
tfd = rb->open(SETTINGS_TMP_FILE, O_WRONLY|O_CREAT|O_TRUNC); tfd = rb->open(SETTINGS_TMP_FILE, O_WRONLY|O_CREAT|O_TRUNC, 0666);
if (tfd < 0) if (tfd < 0)
return false; return false;

View file

@ -3492,7 +3492,7 @@ static int record_file(char *filename)
{8, 32000}, {9, 44100}, {10, 48000} {8, 32000}, {9, 44100}, {10, 48000}
}; };
fd = rb->open(filename, O_RDWR|O_CREAT|O_TRUNC); fd = rb->open(filename, O_RDWR|O_CREAT|O_TRUNC, 0666);
if (fd < 0) if (fd < 0)
{ {
rb->splash(2*HZ, "Couldn't create WAV file"); rb->splash(2*HZ, "Couldn't create WAV file");

View file

@ -223,12 +223,12 @@ void write_buf(void){
#if 0 #if 0
/* can use to save and later analyze what we produce */ /* can use to save and later analyze what we produce */
i = rb->open ( "/sound.raw" , O_WRONLY | O_APPEND | O_CREAT ); i = rb->open ( "/sound.raw" , O_WRONLY | O_APPEND | O_CREAT, 0666);
rb->write ( i , sp_sound_buf , TMNUM ); rb->write ( i , sp_sound_buf , TMNUM );
rb->close (i); rb->close (i);
i = rb->open ( "/sound2.raw" , O_WRONLY | O_APPEND |O_CREAT); i = rb->open ( "/sound2.raw" , O_WRONLY | O_APPEND |O_CREAT, 0666);
rb->write ( i , (unsigned char *)my_buf , TMNUM*4*3 ); rb->write ( i , (unsigned char *)my_buf , TMNUM*4*3 );
rb->close (i); rb->close (i);
#endif #endif

View file

@ -86,7 +86,7 @@ static void write_cache(void)
Check at each write since file may be deleted at any time */ Check at each write since file may be deleted at any time */
if(!file_exists(SCROBBLER_FILE)) if(!file_exists(SCROBBLER_FILE))
{ {
fd = open(SCROBBLER_FILE, O_RDWR | O_CREAT); fd = open(SCROBBLER_FILE, O_RDWR | O_CREAT, 0666);
if(fd >= 0) if(fd >= 0)
{ {
fdprintf(fd, "#AUDIOSCROBBLER/" SCROBBLER_VERSION "\n" fdprintf(fd, "#AUDIOSCROBBLER/" SCROBBLER_VERSION "\n"

View file

@ -193,7 +193,7 @@ static bool write_nvram_data(char* buf, int max_len)
max_len-NVRAM_DATA_START-1,0xffffffff); max_len-NVRAM_DATA_START-1,0xffffffff);
memcpy(&buf[4],&crc32,4); memcpy(&buf[4],&crc32,4);
#ifndef HAVE_RTC_RAM #ifndef HAVE_RTC_RAM
fd = open(NVRAM_FILE,O_CREAT|O_TRUNC|O_WRONLY); fd = open(NVRAM_FILE,O_CREAT|O_TRUNC|O_WRONLY, 0666);
if (fd >= 0) if (fd >= 0)
{ {
int len = write(fd,buf,max_len); int len = write(fd,buf,max_len);
@ -532,7 +532,7 @@ static bool settings_write_config(const char* filename, int options)
int i; int i;
int fd; int fd;
char value[MAX_PATH]; char value[MAX_PATH];
fd = open(filename,O_CREAT|O_TRUNC|O_WRONLY); fd = open(filename,O_CREAT|O_TRUNC|O_WRONLY, 0666);
if (fd < 0) if (fd < 0)
return false; return false;
fdprintf(fd, "# .cfg file created by rockbox %s - " fdprintf(fd, "# .cfg file created by rockbox %s - "

View file

@ -1705,7 +1705,7 @@ static void __attribute__ ((noinline)) add_tagcache(char *path,
#ifdef SIMULATOR #ifdef SIMULATOR
/* Crude logging for the sim - to aid in debugging */ /* Crude logging for the sim - to aid in debugging */
int logfd = open(ROCKBOX_DIR "/database.log", int logfd = open(ROCKBOX_DIR "/database.log",
O_WRONLY | O_APPEND | O_CREAT); O_WRONLY | O_APPEND | O_CREAT, 0666);
if (logfd >= 0) { if (logfd >= 0) {
write(logfd, path, strlen(path)); write(logfd, path, strlen(path));
write(logfd, "\n", 1); write(logfd, "\n", 1);
@ -2494,7 +2494,7 @@ static int build_index(int index_type, struct tagcache_header *h, int tmpfd)
* anything whether the index type is sorted or not. * anything whether the index type is sorted or not.
*/ */
snprintf(buf, sizeof buf, TAGCACHE_FILE_INDEX, index_type); snprintf(buf, sizeof buf, TAGCACHE_FILE_INDEX, index_type);
fd = open(buf, O_WRONLY | O_CREAT | O_TRUNC); fd = open(buf, O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (fd < 0) if (fd < 0)
{ {
logf("%s open fail", buf); logf("%s open fail", buf);
@ -2521,7 +2521,7 @@ static int build_index(int index_type, struct tagcache_header *h, int tmpfd)
if (masterfd < 0) if (masterfd < 0)
{ {
logf("Creating new DB"); logf("Creating new DB");
masterfd = open(TAGCACHE_FILE_MASTER, O_WRONLY | O_CREAT | O_TRUNC); masterfd = open(TAGCACHE_FILE_MASTER, O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (masterfd < 0) if (masterfd < 0)
{ {
@ -3447,7 +3447,7 @@ bool tagcache_create_changelog(struct tagcache_search *tcs)
return false; return false;
/* Initialize the changelog */ /* Initialize the changelog */
clfd = open(TAGCACHE_FILE_CHANGELOG, O_WRONLY | O_CREAT | O_TRUNC); clfd = open(TAGCACHE_FILE_CHANGELOG, O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (clfd < 0) if (clfd < 0)
{ {
logf("failure to open changelog"); logf("failure to open changelog");
@ -3820,7 +3820,7 @@ static bool tagcache_dumpsave(void)
if (!tc_stat.ramcache) if (!tc_stat.ramcache)
return false; return false;
fd = open(TAGCACHE_STATEFILE, O_WRONLY | O_CREAT | O_TRUNC); fd = open(TAGCACHE_STATEFILE, O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (fd < 0) if (fd < 0)
{ {
logf("failed to create a statedump"); logf("failed to create a statedump");
@ -4252,7 +4252,7 @@ void tagcache_build(const char *path)
return ; return ;
} }
cachefd = open(TAGCACHE_FILE_TEMP, O_RDWR | O_CREAT | O_TRUNC); cachefd = open(TAGCACHE_FILE_TEMP, O_RDWR | O_CREAT | O_TRUNC, 0666);
if (cachefd < 0) if (cachefd < 0)
{ {
logf("master file open failed: %s", TAGCACHE_FILE_TEMP); logf("master file open failed: %s", TAGCACHE_FILE_TEMP);

View file

@ -63,20 +63,20 @@ void* main(void)
#if 0 #if 0
/* Dump the flash */ /* Dump the flash */
fd=open("/flash.bin",O_CREAT|O_RDWR); fd=open("/flash.bin",O_CREAT|O_RDWR, 0666);
write(fd,(char*)0,1024*1024); write(fd,(char*)0,1024*1024);
close(fd); close(fd);
#endif #endif
#if 1 #if 1
/* Dump what may be the framebuffer */ /* Dump what may be the framebuffer */
fd=open("/framebuffer.bin",O_CREAT|O_RDWR|O_TRUNC); fd=open("/framebuffer.bin",O_CREAT|O_RDWR|O_TRUNC, 0666);
write(fd,framebuffer,220*176*4); write(fd,framebuffer,220*176*4);
close(fd); close(fd);
#endif #endif
fd=open("/gpio.txt",O_CREAT|O_RDWR|O_TRUNC); fd=open("/gpio.txt",O_CREAT|O_RDWR|O_TRUNC, 0666);
unsigned int gpio_a = GPIOA_INPUT_VAL; unsigned int gpio_a = GPIOA_INPUT_VAL;
unsigned int gpio_b = GPIOB_INPUT_VAL; unsigned int gpio_b = GPIOB_INPUT_VAL;
unsigned int gpio_c = GPIOC_INPUT_VAL; unsigned int gpio_c = GPIOC_INPUT_VAL;

View file

@ -557,7 +557,7 @@ int dircache_save(void)
return -1; return -1;
logf("Saving directory cache"); logf("Saving directory cache");
fd = open(DIRCACHE_FILE, O_WRONLY | O_CREAT | O_TRUNC); fd = open(DIRCACHE_FILE, O_WRONLY | O_CREAT | O_TRUNC, 0666);
maindata.magic = DIRCACHE_MAGIC; maindata.magic = DIRCACHE_MAGIC;
maindata.size = dircache_size; maindata.size = dircache_size;

View file

@ -57,7 +57,7 @@ static int flush_cache(int fd);
int file_creat(const char *pathname) int file_creat(const char *pathname)
{ {
return open(pathname, O_WRONLY|O_CREAT|O_TRUNC); return open(pathname, O_WRONLY|O_CREAT|O_TRUNC, 0666);
} }
static int open_internal(const char* pathname, int flags, bool use_cache) static int open_internal(const char* pathname, int flags, bool use_cache)
@ -228,7 +228,7 @@ static int open_internal(const char* pathname, int flags, bool use_cache)
return fd; return fd;
} }
int open(const char* pathname, int flags) int file_open(const char* pathname, int flags)
{ {
/* By default, use the dircache if available. */ /* By default, use the dircache if available. */
return open_internal(pathname, flags, true); return open_internal(pathname, flags, true);

View file

@ -607,7 +607,7 @@ void glyph_cache_save(struct font* pf)
if (pf->fd >= 0 && pf == &font_ui) if (pf->fd >= 0 && pf == &font_ui)
{ {
#ifdef WPSEDITOR #ifdef WPSEDITOR
cache_fd = open(GLYPH_CACHE_FILE, O_WRONLY|O_CREAT|O_TRUNC); cache_fd = open(GLYPH_CACHE_FILE, O_WRONLY|O_CREAT|O_TRUNC, 0666);
#else #else
cache_fd = creat(GLYPH_CACHE_FILE, 0666); cache_fd = creat(GLYPH_CACHE_FILE, 0666);
#endif #endif

View file

@ -49,7 +49,7 @@
#endif #endif
#if defined(SIMULATOR) && !defined(PLUGIN) && !defined(CODEC) #if defined(SIMULATOR) && !defined(PLUGIN) && !defined(CODEC)
#define open(x,y) sim_open(x,y) #define open(x, ...) sim_open(x, __VA_ARGS__)
#define creat(x,m) sim_creat(x,m) #define creat(x,m) sim_creat(x,m)
#define remove(x) sim_remove(x) #define remove(x) sim_remove(x)
#define rename(x,y) sim_rename(x,y) #define rename(x,y) sim_rename(x,y)
@ -61,16 +61,17 @@
#define write(x,y,z) sim_write(x,y,z) #define write(x,y,z) sim_write(x,y,z)
#define close(x) sim_close(x) #define close(x) sim_close(x)
extern int sim_creat(const char *pathname, mode_t mode); extern int sim_creat(const char *pathname, mode_t mode);
extern int sim_open(const char *pathname, int flags, ...);
#endif #endif
typedef int (*open_func)(const char* pathname, int flags); typedef int (*open_func)(const char* pathname, int flags, ...);
typedef ssize_t (*read_func)(int fd, void *buf, size_t count); typedef ssize_t (*read_func)(int fd, void *buf, size_t count);
typedef int (*creat_func)(const char *pathname, mode_t mode); typedef int (*creat_func)(const char *pathname, mode_t mode);
typedef ssize_t (*write_func)(int fd, const void *buf, size_t count); typedef ssize_t (*write_func)(int fd, const void *buf, size_t count);
typedef void (*qsort_func)(void *base, size_t nmemb, size_t size, typedef void (*qsort_func)(void *base, size_t nmemb, size_t size,
int(*_compar)(const void *, const void *)); int(*_compar)(const void *, const void *));
extern int open(const char* pathname, int flags); extern int file_open(const char* pathname, int flags);
extern int close(int fd); extern int close(int fd);
extern int fsync(int fd); extern int fsync(int fd);
extern ssize_t read(int fd, void *buf, size_t count); extern ssize_t read(int fd, void *buf, size_t count);
@ -83,6 +84,9 @@ static inline int creat(const char *pathname, mode_t mode)
(void)mode; (void)mode;
return file_creat(pathname); return file_creat(pathname);
} }
#if !defined(CODEC) && !defined(PLUGIN)
#define open(x, y, ...) file_open(x,y)
#endif
#endif #endif
extern ssize_t write(int fd, const void *buf, size_t count); extern ssize_t write(int fd, const void *buf, size_t count);
extern int remove(const char* pathname); extern int remove(const char* pathname);

View file

@ -189,7 +189,7 @@ void profstop() {
unsigned short current_index; unsigned short current_index;
timer_unregister(); timer_unregister();
profiling = PROF_OFF; profiling = PROF_OFF;
fd = open("/profile.out", O_WRONLY|O_CREAT|O_TRUNC); fd = open("/profile.out", O_WRONLY|O_CREAT|O_TRUNC, 0666);
if (profiling_exit == PROF_ERROR) { if (profiling_exit == PROF_ERROR) {
fdprintf(fd,"Profiling exited with an error.\n"); fdprintf(fd,"Profiling exited with an error.\n");
fdprintf(fd,"Overflow or timer stolen most likely.\n"); fdprintf(fd,"Overflow or timer stolen most likely.\n");

View file

@ -125,7 +125,7 @@ static void debug_file_log(void)
debug_file_close(); debug_file_close();
} }
else if (fd < 0) { else if (fd < 0) {
fd = open(DEBUG_FILE_NAME, O_WRONLY | O_APPEND | O_CREAT); fd = open(DEBUG_FILE_NAME, O_WRONLY | O_APPEND | O_CREAT, 0666);
if (fd >= 0) { if (fd >= 0) {
snprintf(debug_message, DEBUG_MESSAGE_LEN, snprintf(debug_message, DEBUG_MESSAGE_LEN,

View file

@ -356,7 +356,7 @@ int dbg_test(char* name)
for (j=0; j<5; j++) { for (j=0; j<5; j++) {
int num = 40960; int num = 40960;
fd = open(name,O_WRONLY|O_CREAT|O_APPEND); fd = open(name,O_WRONLY|O_CREAT|O_APPEND, 0666);
if (fd<0) { if (fd<0) {
DEBUGF("Failed opening file\n"); DEBUGF("Failed opening file\n");
return -1; return -1;

View file

@ -106,7 +106,9 @@ extern int _wrmdir(const wchar_t*);
#define READDIR(a) (_wreaddir)(a) #define READDIR(a) (_wreaddir)(a)
#define CLOSEDIR(a) (_wclosedir)(a) #define CLOSEDIR(a) (_wclosedir)(a)
#define STAT(a,b) (_wstat)(UTF8_TO_OS(a),b) #define STAT(a,b) (_wstat)(UTF8_TO_OS(a),b)
#define OPEN(a,b,c) (_wopen)(UTF8_TO_OS(a),b,c) /* empty variable parameter list doesn't work for variadic macros,
* so pretend the second parameter is variable too */
#define OPEN(a,...) (_wopen)(UTF8_TO_OS(a), __VA_ARGS__)
#define CLOSE(a) (close)(a) #define CLOSE(a) (close)(a)
#define REMOVE(a) (_wremove)(UTF8_TO_OS(a)) #define REMOVE(a) (_wremove)(UTF8_TO_OS(a))
#define RENAME(a,b) (_wrename)(UTF8_TO_OS(a),utf8_to_ucs2(b,convbuf2)) #define RENAME(a,b) (_wrename)(UTF8_TO_OS(a),utf8_to_ucs2(b,convbuf2))
@ -124,7 +126,9 @@ extern int _wrmdir(const wchar_t*);
#define READDIR(a) (readdir)(a) #define READDIR(a) (readdir)(a)
#define CLOSEDIR(a) (closedir)(a) #define CLOSEDIR(a) (closedir)(a)
#define STAT(a,b) (stat)(a,b) #define STAT(a,b) (stat)(a,b)
#define OPEN(a,b,c) (open)(a,b,c) /* empty variable parameter list doesn't work for variadic macros,
* so pretend the second parameter is variable too */
#define OPEN(a, ...) (open)(a, __VA_ARGS__)
#define CLOSE(x) (close)(x) #define CLOSE(x) (close)(x)
#define REMOVE(a) (remove)(a) #define REMOVE(a) (remove)(a)
#define RENAME(a,b) (rename)(a,b) #define RENAME(a,b) (rename)(a,b)
@ -329,15 +333,23 @@ void sim_closedir(MYDIR *dir)
free(dir); free(dir);
} }
int sim_open(const char *name, int o) int sim_open(const char *name, int o, ...)
{ {
int opts = rockbox2sim(o); int opts = rockbox2sim(o);
int ret; int ret;
if (num_openfiles >= MAX_OPEN_FILES) if (num_openfiles >= MAX_OPEN_FILES)
return -2; return -2;
ret = OPEN(get_sim_pathname(name), opts, 0666); if (o & O_CREAT)
{
va_list ap;
va_start(ap, o);
ret = OPEN(get_sim_pathname(name), opts, va_arg(ap, mode_t));
va_end(ap);
}
else
ret = OPEN(get_sim_pathname(name), opts);
if (ret >= 0) if (ret >= 0)
num_openfiles++; num_openfiles++;
return ret; return ret;