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 }