14ca1ab94SDag-Erling Smørgrav /*- 24ca1ab94SDag-Erling Smørgrav * Copyright (c) 1998 Dag-Erling Co�dan Sm�rgrav 34ca1ab94SDag-Erling Smørgrav * All rights reserved. 44ca1ab94SDag-Erling Smørgrav * 54ca1ab94SDag-Erling Smørgrav * Redistribution and use in source and binary forms, with or without 64ca1ab94SDag-Erling Smørgrav * modification, are permitted provided that the following conditions 74ca1ab94SDag-Erling Smørgrav * are met: 84ca1ab94SDag-Erling Smørgrav * 1. Redistributions of source code must retain the above copyright 94ca1ab94SDag-Erling Smørgrav * notice, this list of conditions and the following disclaimer 104ca1ab94SDag-Erling Smørgrav * in this position and unchanged. 114ca1ab94SDag-Erling Smørgrav * 2. Redistributions in binary form must reproduce the above copyright 124ca1ab94SDag-Erling Smørgrav * notice, this list of conditions and the following disclaimer in the 134ca1ab94SDag-Erling Smørgrav * documentation and/or other materials provided with the distribution. 144ca1ab94SDag-Erling Smørgrav * 3. The name of the author may not be used to endorse or promote products 154ca1ab94SDag-Erling Smørgrav * derived from this software without specific prior written permission 164ca1ab94SDag-Erling Smørgrav * 174ca1ab94SDag-Erling Smørgrav * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 184ca1ab94SDag-Erling Smørgrav * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 194ca1ab94SDag-Erling Smørgrav * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 204ca1ab94SDag-Erling Smørgrav * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 214ca1ab94SDag-Erling Smørgrav * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 224ca1ab94SDag-Erling Smørgrav * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 234ca1ab94SDag-Erling Smørgrav * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 244ca1ab94SDag-Erling Smørgrav * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 254ca1ab94SDag-Erling Smørgrav * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 264ca1ab94SDag-Erling Smørgrav * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 274ca1ab94SDag-Erling Smørgrav * 280fba3a00SDag-Erling Smørgrav * $Id: file.c,v 1.2 1998/11/06 22:14:08 des Exp $ 294ca1ab94SDag-Erling Smørgrav */ 304ca1ab94SDag-Erling Smørgrav 310fba3a00SDag-Erling Smørgrav #include <sys/param.h> 32d8acd8dcSDag-Erling Smørgrav #include <sys/stat.h> 334ca1ab94SDag-Erling Smørgrav #include <stdio.h> 344ca1ab94SDag-Erling Smørgrav #include <string.h> 354ca1ab94SDag-Erling Smørgrav 364ca1ab94SDag-Erling Smørgrav #include "fetch.h" 37d8acd8dcSDag-Erling Smørgrav #include "common.h" 384ca1ab94SDag-Erling Smørgrav 394ca1ab94SDag-Erling Smørgrav FILE * 40d8acd8dcSDag-Erling Smørgrav fetchGetFile(struct url *u, char *flags) 414ca1ab94SDag-Erling Smørgrav { 42d8acd8dcSDag-Erling Smørgrav FILE *f; 43d8acd8dcSDag-Erling Smørgrav 44d8acd8dcSDag-Erling Smørgrav f = fopen(u->doc, "r"); 45d8acd8dcSDag-Erling Smørgrav 46d8acd8dcSDag-Erling Smørgrav if (f == NULL) 47d8acd8dcSDag-Erling Smørgrav _fetch_syserr(); 48d8acd8dcSDag-Erling Smørgrav return f; 494ca1ab94SDag-Erling Smørgrav } 504ca1ab94SDag-Erling Smørgrav 514ca1ab94SDag-Erling Smørgrav FILE * 52d8acd8dcSDag-Erling Smørgrav fetchPutFile(struct url *u, char *flags) 534ca1ab94SDag-Erling Smørgrav { 54d8acd8dcSDag-Erling Smørgrav FILE *f; 55d8acd8dcSDag-Erling Smørgrav 564ca1ab94SDag-Erling Smørgrav if (strchr(flags, 'a')) 57d8acd8dcSDag-Erling Smørgrav f = fopen(u->doc, "a"); 58d8acd8dcSDag-Erling Smørgrav else 59d8acd8dcSDag-Erling Smørgrav f = fopen(u->doc, "w"); 60d8acd8dcSDag-Erling Smørgrav 61d8acd8dcSDag-Erling Smørgrav if (f == NULL) 62d8acd8dcSDag-Erling Smørgrav _fetch_syserr(); 63d8acd8dcSDag-Erling Smørgrav return f; 64d8acd8dcSDag-Erling Smørgrav } 65d8acd8dcSDag-Erling Smørgrav 66d8acd8dcSDag-Erling Smørgrav int 67d8acd8dcSDag-Erling Smørgrav fetchStatFile(struct url *u, struct url_stat *us, char *flags) 68d8acd8dcSDag-Erling Smørgrav { 69d8acd8dcSDag-Erling Smørgrav struct stat sb; 70d8acd8dcSDag-Erling Smørgrav 71d8acd8dcSDag-Erling Smørgrav if (stat(u->doc, &sb) == -1) { 72d8acd8dcSDag-Erling Smørgrav _fetch_syserr(); 73d8acd8dcSDag-Erling Smørgrav return -1; 74d8acd8dcSDag-Erling Smørgrav } 75d8acd8dcSDag-Erling Smørgrav us->size = sb.st_size; 760fba3a00SDag-Erling Smørgrav us->atime = sb.st_atime; 770fba3a00SDag-Erling Smørgrav us->mtime = sb.st_mtime; 78d8acd8dcSDag-Erling Smørgrav return 0; 794ca1ab94SDag-Erling Smørgrav } 80