Ensure parameter types match format string
[samba.git] / examples / libsmbclient / testfstatvfs.c
1 #include <sys/types.h>
2 #include <sys/statvfs.h>
3 #include <stdio.h> 
4 #include <unistd.h>
5 #include <string.h> 
6 #include <time.h> 
7 #include <errno.h>
8 #include <libsmbclient.h> 
9 #include "get_auth_data_fn.h"
10
11
12 int main(int argc, char * argv[]) 
13
14     int             i;
15     int             fd;
16     int             ret;
17     int             debug = 0;
18     char *          p;
19     char            path[2048];
20     struct stat     statbuf;
21     struct statvfs  statvfsbuf;
22     
23     smbc_init(get_auth_data_fn, debug); 
24     
25     for (;;)
26     {
27         fprintf(stdout, "Path: ");
28         *path = '\0';
29         fgets(path, sizeof(path) - 1, stdin);
30         if (strlen(path) == 0)
31         {
32             return 0;
33         }
34
35         p = path + strlen(path) - 1;
36         if (*p == '\n')
37         {
38             *p = '\0';
39         }
40     
41         /* Determine if it's a file or a folder */
42         if (smbc_stat(path, &statbuf) < 0)
43         {
44             perror("smbc_stat");
45             continue;
46         }
47
48         if (S_ISREG(statbuf.st_mode))
49         {
50             if ((fd = smbc_open(path, O_RDONLY, 0)) < 0)
51             {
52                 perror("smbc_open");
53                 continue;
54             }
55         }
56         else
57         {
58             if ((fd = smbc_opendir(path)) < 0)
59             {
60                 perror("smbc_opendir");
61                 continue;
62             }
63         }
64
65         ret = smbc_fstatvfs(fd, &statvfsbuf);
66
67         smbc_close(fd);
68
69         if (ret < 0)
70         {
71             perror("fstatvfs");
72         }
73         else
74         {
75             printf("\n");
76             printf("Block Size: %lu\n", statvfsbuf.f_bsize);
77             printf("Fragment Size: %lu\n", statvfsbuf.f_frsize);
78             printf("Blocks: %llu\n",
79                    (unsigned long long) statvfsbuf.f_blocks);
80             printf("Free Blocks: %llu\n",
81                    (unsigned long long) statvfsbuf.f_bfree);
82             printf("Available Blocks: %llu\n",
83                    (unsigned long long) statvfsbuf.f_bavail);
84             printf("Files : %llu\n",
85                    (unsigned long long) statvfsbuf.f_files);
86             printf("Free Files: %llu\n",
87                    (unsigned long long) statvfsbuf.f_ffree);
88             printf("Available Files: %llu\n",
89                    (unsigned long long) statvfsbuf.f_favail);
90             printf("File System ID: %lu\n",
91                    (unsigned long) statvfsbuf.f_fsid);
92             printf("\n");
93
94             printf("Flags: 0x%lx\n", statvfsbuf.f_flag);
95             printf("Extended Features: ");
96
97             if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_NO_UNIXCIFS)
98             {
99                 printf("NO_UNIXCIFS ");
100             }
101             else
102             {
103                 printf("unixcifs ");
104             }
105
106             if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_CASE_INSENSITIVE)
107             {
108                 printf("CASE_INSENSITIVE ");
109             }
110             else
111             {
112                 printf("case_sensitive ");
113             }
114
115             if (statvfsbuf.f_flag & SMBC_VFS_FEATURE_DFS)
116             {
117                 printf("DFS ");
118             }
119             else
120             {
121                 printf("no_dfs ");
122             }
123
124             printf("\n");
125         }
126     }
127
128     return 0; 
129 }