Oops, my fix to subdir.mk didn't work with existing symlinks. Fixed.
[wvapps.git] / wvsync / wvsyncstring.cc
bloba082955b611e0aed0b2c4ea49b17e03c0b9ea075
1 /*
2 * Worldvisions Weaver Software:
3 * Copyright (C) 1997-2004 Net Integration Technologies, Inc.
5 * See wvsyncstring.h for details.
7 */
9 #include "wvsyncstring.h"
10 #include <time.h>
12 WvSyncString::WvSyncString(WvStringParm _name, WvStringParm _str, time_t mtime)
13 : WvSyncObj(_name), str(_str)
15 if (mtime == 1)
16 faketime = time(NULL);
17 else
18 faketime = mtime;
19 setlastmodtime();
23 bool WvSyncString::getdata(WvBuf &out, off_t ofs, size_t size)
25 bool done = false;
27 const char *data = str+ofs;
28 if (size >= strlen(data))
30 size = strlen(data);
31 done = true;
34 out.put(data, size);
36 return done;
40 off_t WvSyncString::approxsize() const
42 return str.len();
46 time_t WvSyncString::findlastmodtime() const
48 return faketime;
52 bool WvSyncString::installnew(WvStringParm fname, WvStringParm newmeta,
53 time_t newmtime)
55 WvFile f(fname, O_RDONLY);
56 WvDynBuf buf;
57 if (!f.isok())
58 return false;
60 while (f.isok())
62 if (f.select(-1, true, false))
63 f.read(buf, 1024);
66 str = (const char *) buf.get(buf.used());
68 applymeta(newmeta, newmtime);
70 return true;
73 bool WvSyncString::isok() const
75 return (str != "(null)");
78 WvString WvSyncString::string() const
80 return str;