]> git.saurik.com Git - apple/security.git/blame - OSX/libsecurity_ssl/sslViewer/fileIo.c
Security-57337.60.2.tar.gz
[apple/security.git] / OSX / libsecurity_ssl / sslViewer / fileIo.c
CommitLineData
b1ab9ed8 1/*
d8f41ccd 2 * Copyright (c) 2001-2003,2006-2012,2014 Apple Inc. All Rights Reserved.
b1ab9ed8
A
3 *
4 * @APPLE_LICENSE_HEADER_START@
d8f41ccd 5 *
b1ab9ed8
A
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
d8f41ccd 12 *
b1ab9ed8
A
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
d8f41ccd 20 *
b1ab9ed8
A
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24/*
25 * fileIo.c - simple file read/write utilities
26 */
27
28#include <unistd.h>
29#include <fcntl.h>
30#include <errno.h>
31#include <stdio.h>
32#include <stdlib.h>
33#include <sys/types.h>
34#include <sys/stat.h>
35#include "fileIo.h"
36
37int writeFile(
38 const char *fileName,
39 const unsigned char *bytes,
40 unsigned numBytes)
41{
42 int rtn;
43 int fd;
44
45 fd = open(fileName, O_RDWR | O_CREAT | O_TRUNC, 0600);
46 if(fd < 0) {
47 return errno;
48 }
49 rtn = lseek(fd, 0, SEEK_SET);
50 if(rtn < 0) {
51 return errno;
52 }
53 rtn = write(fd, bytes, (size_t)numBytes);
54 if(rtn != (int)numBytes) {
55 if(rtn >= 0) {
56 printf("writeFile: short write\n");
57 }
58 rtn = EIO;
59 }
60 else {
61 rtn = 0;
62 }
63 close(fd);
64 return rtn;
65}
66
67/*
68 * Read entire file.
69 */
70int readFile(
71 const char *fileName,
72 unsigned char **bytes, // mallocd and returned
73 unsigned *numBytes) // returned
74{
75 int rtn;
76 int fd;
77 unsigned char *buf;
78 struct stat sb;
79 unsigned size;
80
81 *numBytes = 0;
82 *bytes = NULL;
83 fd = open(fileName, O_RDONLY, 0);
84 if(fd < 0) {
85 return errno;
86 }
87 rtn = fstat(fd, &sb);
88 if(rtn) {
89 goto errOut;
90 }
91 size = sb.st_size;
92 buf = malloc(size);
93 if(buf == NULL) {
94 rtn = ENOMEM;
95 goto errOut;
96 }
97 rtn = lseek(fd, 0, SEEK_SET);
98 if(rtn < 0) {
99 goto errOut;
100 }
101 rtn = read(fd, buf, (size_t)size);
102 if(rtn != (int)size) {
103 if(rtn >= 0) {
104 printf("readFile: short read\n");
105 }
106 rtn = EIO;
107 }
108 else {
109 rtn = 0;
110 *bytes = buf;
111 *numBytes = size;
112 }
113errOut:
114 close(fd);
115 return rtn;
116}