openfile.c (2995B)
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 /* 7 * This test calls PR_OpenFile to create a bunch of files 8 * with various file modes. 9 */ 10 11 #include "prio.h" 12 #include "prerror.h" 13 #include "prinit.h" 14 15 #include <stdio.h> 16 #include <stdlib.h> 17 18 #define TEMPLATE_FILE_NAME "template.txt" 19 20 int main(int argc, char** argv) { 21 FILE* template; 22 char buf[32]; 23 PRInt32 nbytes; 24 PRFileDesc* fd; 25 26 /* Write in text mode. Let stdio deal with line endings. */ 27 template = fopen(TEMPLATE_FILE_NAME, "w"); 28 fputs("line 1\nline 2\n", template); 29 fclose(template); 30 31 /* Read in binary mode */ 32 fd = PR_OpenFile(TEMPLATE_FILE_NAME, PR_RDONLY, 0666); 33 nbytes = PR_Read(fd, buf, sizeof(buf)); 34 PR_Close(fd); 35 PR_Delete(TEMPLATE_FILE_NAME); 36 37 fd = PR_OpenFile("tfil0700.txt", PR_RDWR | PR_CREATE_FILE, 0700); 38 if (NULL == fd) { 39 fprintf(stderr, "PR_OpenFile failed (%d, %d)\n", PR_GetError(), 40 PR_GetOSError()); 41 exit(1); 42 } 43 PR_Write(fd, buf, nbytes); 44 PR_Close(fd); 45 46 fd = PR_OpenFile("tfil0500.txt", PR_RDWR | PR_CREATE_FILE, 0500); 47 if (NULL == fd) { 48 fprintf(stderr, "PR_OpenFile failed (%d, %d)\n", PR_GetError(), 49 PR_GetOSError()); 50 exit(1); 51 } 52 PR_Write(fd, buf, nbytes); 53 PR_Close(fd); 54 55 fd = PR_OpenFile("tfil0400.txt", PR_RDWR | PR_CREATE_FILE, 0400); 56 if (NULL == fd) { 57 fprintf(stderr, "PR_OpenFile failed (%d, %d)\n", PR_GetError(), 58 PR_GetOSError()); 59 exit(1); 60 } 61 PR_Write(fd, buf, nbytes); 62 PR_Close(fd); 63 64 fd = PR_OpenFile("tfil0644.txt", PR_RDWR | PR_CREATE_FILE, 0644); 65 if (NULL == fd) { 66 fprintf(stderr, "PR_OpenFile failed (%d, %d)\n", PR_GetError(), 67 PR_GetOSError()); 68 exit(1); 69 } 70 PR_Write(fd, buf, nbytes); 71 PR_Close(fd); 72 73 fd = PR_OpenFile("tfil0664.txt", PR_RDWR | PR_CREATE_FILE, 0664); 74 if (NULL == fd) { 75 fprintf(stderr, "PR_OpenFile failed (%d, %d)\n", PR_GetError(), 76 PR_GetOSError()); 77 exit(1); 78 } 79 PR_Write(fd, buf, nbytes); 80 PR_Close(fd); 81 82 fd = PR_OpenFile("tfil0660.txt", PR_RDWR | PR_CREATE_FILE, 0660); 83 if (NULL == fd) { 84 fprintf(stderr, "PR_OpenFile failed (%d, %d)\n", PR_GetError(), 85 PR_GetOSError()); 86 exit(1); 87 } 88 PR_Write(fd, buf, nbytes); 89 PR_Close(fd); 90 91 fd = PR_OpenFile("tfil0666.txt", PR_RDWR | PR_CREATE_FILE, 0666); 92 if (NULL == fd) { 93 fprintf(stderr, "PR_OpenFile failed (%d, %d)\n", PR_GetError(), 94 PR_GetOSError()); 95 exit(1); 96 } 97 PR_Write(fd, buf, nbytes); 98 PR_Close(fd); 99 100 fd = PR_OpenFile("tfil0640.txt", PR_RDWR | PR_CREATE_FILE, 0640); 101 if (NULL == fd) { 102 fprintf(stderr, "PR_OpenFile failed (%d, %d)\n", PR_GetError(), 103 PR_GetOSError()); 104 exit(1); 105 } 106 PR_Write(fd, buf, nbytes); 107 PR_Close(fd); 108 109 PR_Cleanup(); 110 return 0; 111 }