root/examples/libsmbclient/testfstatvfs.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. main

   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[]) 
     /* [<][>][^][v][top][bottom][index][help] */
  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 }

/* [<][>][^][v][top][bottom][index][help] */