diff --git a/src/xpdev/sopenfile.c b/src/xpdev/sopenfile.c index ec778722b5e40b7abfd11d4c3c713d7b22d4c6cc..d2d70b86f4e75241e6a150b1c57b3072324daa88 100644 --- a/src/xpdev/sopenfile.c +++ b/src/xpdev/sopenfile.c @@ -8,11 +8,14 @@ int main(int argc, char** argv) char* share = "NWA"; bool try_all = true; bool loop = false; + bool rm = false; if(argc < 2) { printf("usage: sopenfile [-r] [-l] <path/filename> [share-mode]\n"); printf("\n"); printf("-r open file read-only instead of read/write\n"); + printf("-c open file with create permissions\n"); + printf("-R remove file after open\n"); printf("-l loop until failure\n"); printf("\n"); printf("share-mode: N (deny-none)\n"); @@ -25,6 +28,14 @@ int main(int argc, char** argv) access = O_RDONLY; ++argn; } + if(strcmp(argv[argn], "-c") == 0) { + access |= O_CREAT; + ++argv; + } + if(strcmp(argv[argn], "-R") == 0) { + rm = true; + ++argn; + } if(strcmp(argv[argn], "-l") == 0) { loop = true; ++argn; @@ -54,11 +65,13 @@ int main(int argc, char** argv) return EXIT_FAILURE; } fprintf(stderr, "%s Deny-%c (share mode %x): ", path, toupper(share_flag), share_mode); - int file = sopen(path, access, share_mode); + int file = sopen(path, access, share_mode, DEFFILEMODE); if(file < 0) fprintf(stderr, "Error %d (%s)\n", errno, strerror(errno)); else { printf("Success\n"); + if(rm) + printf("remove(%s) = %d\n", path, unlink(path)); if(!try_all) { fprintf(stderr, "Hit enter\n"); getchar();