448
|
1 /*
|
|
2 * Copyright (c) 2000, Red Hat, Inc.
|
|
3 *
|
|
4 * This program is free software; you can redistribute it and/or modify
|
|
5 * it under the terms of the GNU General Public License as published by
|
|
6 * the Free Software Foundation; either version 2 of the License, or
|
|
7 * (at your option) any later version.
|
|
8 *
|
|
9 * A copy of the GNU General Public License can be found at
|
|
10 * http://www.gnu.org/
|
|
11 *
|
|
12 * Written by DJ Delorie <dj@cygnus.com>
|
|
13 *
|
|
14 */
|
|
15
|
|
16 /* The purpose of this file is to manage access to files stored on the
|
|
17 local disk (i.e. "downloading" setup.ini). Called from netio.cc */
|
|
18
|
|
19 #include <stdio.h>
|
|
20 #include <sys/types.h>
|
|
21 #include <sys/stat.h>
|
|
22 #include <errno.h>
|
|
23 #include "win32.h"
|
|
24 #include "netio.h"
|
|
25 #include "nio-file.h"
|
|
26 #include "resource.h"
|
|
27 #include "msg.h"
|
|
28
|
|
29 NetIO_File::NetIO_File (char *Purl)
|
|
30 : NetIO (Purl)
|
|
31 {
|
|
32 struct stat s;
|
|
33 fd = fopen (path, "rb");
|
|
34 if (fd)
|
|
35 {
|
|
36 stat (path, &s);
|
|
37 file_size = s.st_size;
|
|
38 }
|
|
39 else
|
|
40 {
|
|
41 char *err = strerror (errno);
|
|
42 if (!err)
|
|
43 err = "(unknown error)";
|
|
44 note (IDS_ERR_OPEN_READ, path, err);
|
|
45 }
|
|
46 }
|
|
47
|
|
48 NetIO_File::~NetIO_File ()
|
|
49 {
|
|
50 if (fd)
|
|
51 fclose ((FILE *)fd);
|
|
52 }
|
|
53
|
|
54 int
|
|
55 NetIO_File::ok ()
|
|
56 {
|
|
57 return fd ? 1 : 0;
|
|
58 }
|
|
59
|
|
60 int
|
|
61 NetIO_File::read (char *buf, int nbytes)
|
|
62 {
|
|
63 return fread (buf, 1, nbytes, (FILE *)fd);
|
|
64 }
|