127 |
if (!cname || !cmode) |
if (!cname || !cmode) |
128 |
return(-1); /* Exception will already have been thrown */ |
return(-1); /* Exception will already have been thrown */ |
129 |
|
|
130 |
// FIXME: Should we manually set permission mode? |
// FIXME: Do we have the right permission mode? |
131 |
if (!strcmp(cmode,"r")) |
if (!strcmp(cmode,"r")) |
132 |
rc = open(cname, O_RDONLY); |
rc = open(cname, O_RDONLY); |
133 |
else if (!strcmp(cmode,"w")) |
else if (!strcmp(cmode,"w")) |
134 |
rc = open(cname, O_WRONLY | O_CREAT); |
rc = open(cname, O_WRONLY | O_CREAT, |
135 |
|
S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH); |
136 |
else if (!strcmp(cmode,"a")) |
else if (!strcmp(cmode,"a")) |
137 |
rc = open(cname, O_WRONLY | O_CREAT | O_APPEND); |
rc = open(cname, O_WRONLY | O_CREAT | O_APPEND, |
138 |
|
S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH); |
139 |
else if (!strcmp(cmode, "rw")) |
else if (!strcmp(cmode, "rw")) |
140 |
rc = open(cname, O_RDWR | O_CREAT); |
rc = open(cname, O_RDWR | O_CREAT, |
141 |
|
S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH); |
142 |
else if (!strcmp(cmode, "rwa")) |
else if (!strcmp(cmode, "rwa")) |
143 |
rc = open(cname, O_RDWR | O_CREAT | O_APPEND); |
rc = open(cname, O_RDWR | O_CREAT | O_APPEND, |
144 |
|
S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH); |
145 |
else if (!strcmp(cmode, "rws") || !strcmp(cmode,"rwd")) |
else if (!strcmp(cmode, "rws") || !strcmp(cmode,"rwd")) |
146 |
rc = open(cname, O_RDWR | O_CREAT | O_SYNC); |
rc = open(cname, O_RDWR | O_CREAT | O_SYNC, |
147 |
|
S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH); |
148 |
else |
else |
149 |
rc = -1; /* Invalid mode */ |
rc = -1; /* Invalid mode */ |
150 |
|
|