It's 2013.
[usmb.git] / samba30_compat.c
blobcaa9bb792348ab2d50f7f6e1e3fe0795b3dc8f35
1 /* usmb - mount SMB shares via FUSE and Samba
2 * Copyright (C) 2006-2009 Geoff Johnstone
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as
6 * published by the Free Software Foundation.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #include "config.h"
18 #include <errno.h>
19 #include <stdio.h>
20 #include <stdlib.h>
21 #include <string.h>
22 #include "samba3x-compat.h"
23 #include "usmb.h"
24 #include "usmb_file.h"
25 #include "utils.h"
28 int usmb_statfs (const char *path UNUSED, struct statvfs *vfs UNUSED)
30 (void)path;
31 (void)vfs;
32 return -ENOSYS;
36 int compat_truncate (const char *path UNUSED, SMBCFILE *file UNUSED, off_t size)
38 /* Windows doesn't support truncation so we implement a limited version:
39 * 0 == size => create a new file for writing.
40 * current size == size => succeed.
41 * else return -ENOSYS.
44 if (0 == size)
46 char *url = make_url (path);
47 if (NULL == url)
48 return -ENOMEM;
50 SMBCFILE *file_ = smbc_getFunctionOpen (ctx) (ctx, url,
51 O_WRONLY | O_TRUNC, 0);
52 if (NULL == file_)
54 free_errno (url);
55 return -errno;
58 smbc_getFunctionClose (ctx) (ctx, file_);
59 free (url);
61 return 0;
64 struct stat st;
65 int ret = usmb_getattr (path, &st);
67 if (0 != ret)
68 return ret;
70 return (size == st.st_size) ? 0 : -ENOSYS;