Attachment 'lfc-se-user.cc'

Download

   1 #include <sys/types.h>
   2 #include <iostream>
   3 #include <iomanip>
   4 #include <cstring>
   5 #include <map>
   6 
   7 #include "lfc_api.h"
   8 #include "serrno.h"
   9 
  10 int main(int argc, char *argv[])
  11 {
  12     const char *self = argv[0];
  13     char *sename = 0;
  14     uid_t uid = 0;
  15     std::map<uid_t, int> userfiles;
  16 
  17     switch (argc) {
  18     case 3:
  19         uid = strtol(argv[2], 0, 0);
  20         /* no break */
  21     case 2:
  22         sename = argv[1];
  23         break;
  24     default:
  25         std::cerr << "Usage: " << self << " SENAME [UID]" << std::endl;
  26         return 1;
  27     }
  28 
  29     std::cerr << "Counting files on " << sename;
  30     if (uid) std::cerr << " belonging to " << uid;
  31     std::cerr << " ..." << std::endl;
  32 
  33     int nfiles = 0;
  34     lfc_list list;
  35     int flags = CNS_LIST_BEGIN;
  36     struct lfc_filereplica *replica;
  37     struct lfc_filestatg statbuf;
  38 
  39     if (lfc_startsess(getenv("LFC_HOST"), "Looking up files on a Storage Element")) {
  40         std::cerr << self << ": " << sstrerror(serrno) << std::endl;
  41         return 1;    
  42     }
  43 
  44     while ((replica = lfc_listreplicax(0, sename, 0, flags, &list))) {
  45         flags = CNS_LIST_CONTINUE;
  46 
  47         if (lfc_statr(replica->sfn, &statbuf)) {
  48             std::cerr << self << ": " << sstrerror(serrno) << std::endl;
  49             continue;
  50         }
  51         if (uid) {
  52             if (statbuf.uid == uid) {
  53                 std::cout << replica->sfn << std::endl;
  54                 ++nfiles;
  55             }
  56         } else {
  57             ++userfiles[statbuf.uid];
  58         }
  59     }
  60     if (serrno) std::cerr << self << ": " << sstrerror(serrno) << std::endl;
  61     lfc_listreplicax(0, sename, 0, CNS_LIST_END, &list);
  62 
  63     lfc_endsess();
  64 
  65     if (uid) {
  66         std::cerr << "Found " << nfiles << " file";
  67         if (nfiles != 1) std::cerr << "s";
  68         std::cerr << std::endl;
  69     } else {   
  70         for (std::map<uid_t, int>::iterator user = userfiles.begin(); user != userfiles.end(); ++user) {
  71             char username[256];
  72             if (lfc_getusrbyuid(user->first, username)) {
  73                 std::cerr << self << ": " << sstrerror(serrno) << std::endl;
  74                 std::strcpy(username, "unknown");
  75             }
  76             std::cout << std::setw(6) << user->second << " files of " << std::setw(6) << user->first << " (" << username << ")" << std::endl;
  77         }
  78     }
  79 }

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.
  • [get | view] (2008-10-29 21:58:46, 0.8 KB) [[attachment:asc.c]]
  • [get | view] (2008-10-29 15:52:36, 0.6 KB) [[attachment:bbox]]
  • [get | view] (2008-10-29 15:52:48, 0.8 KB) [[attachment:bib2bib]]
  • [get | view] (2008-10-29 21:58:53, 0.0 KB) [[attachment:bits.c]]
  • [get | view] (2008-10-29 21:58:59, 0.7 KB) [[attachment:claus.c]]
  • [get | view] (2008-10-29 15:53:02, 0.9 KB) [[attachment:cvstags]]
  • [get | view] (2008-10-29 15:53:20, 0.7 KB) [[attachment:german2iso]]
  • [get | view] (2008-10-29 15:53:26, 1.1 KB) [[attachment:germanuml]]
  • [get | view] (2008-10-29 15:53:34, 0.4 KB) [[attachment:gnuplot_diff]]
  • [get | view] (2008-10-29 15:53:42, 1.2 KB) [[attachment:httphead]]
  • [get | view] (2008-10-30 10:56:00, 2.4 KB) [[attachment:ldapphone.cc]]
  • [get | view] (2008-10-29 21:59:14, 0.0 KB) [[attachment:leak.cc]]
  • [get | view] (2008-10-29 22:00:45, 1.3 KB) [[attachment:lfc-lr.cc]]
  • [get | view] (2008-10-29 22:00:55, 1.9 KB) [[attachment:lfc-se-ls.cc]]
  • [get | view] (2008-10-29 22:01:03, 2.2 KB) [[attachment:lfc-se-user.cc]]
  • [get | view] (2008-10-29 22:01:09, 1.5 KB) [[attachment:lfc-sfn2lfn.cc]]
  • [get | view] (2008-10-29 21:59:35, 0.4 KB) [[attachment:liststat.cc]]
  • [get | view] (2008-10-29 21:59:41, 0.2 KB) [[attachment:listsum.cc]]
  • [get | view] (2008-10-29 21:59:47, 0.4 KB) [[attachment:listtab.cc]]
  • [get | view] (2008-10-29 15:53:55, 1.3 KB) [[attachment:lsf]]
  • [get | view] (2008-10-29 15:54:01, 0.3 KB) [[attachment:mangrep]]
  • [get | view] (2008-10-29 15:54:09, 0.4 KB) [[attachment:msec2time]]
  • [get | view] (2008-10-29 15:54:17, 0.3 KB) [[attachment:notouch]]
  • [get | view] (2008-10-29 15:54:27, 1.1 KB) [[attachment:pathgrep]]
  • [get | view] (2008-10-29 21:59:55, 0.7 KB) [[attachment:realtime.cc]]
  • [get | view] (2008-10-29 15:54:39, 0.5 KB) [[attachment:root2iso]]
  • [get | view] (2008-10-29 15:54:47, 0.4 KB) [[attachment:rpath]]
  • [get | view] (2008-10-29 15:54:58, 0.7 KB) [[attachment:sourcegrep]]
  • [get | view] (2008-10-29 15:55:06, 0.3 KB) [[attachment:system]]
  • [get | view] (2008-10-29 22:00:07, 1.6 KB) [[attachment:timeout.c]]
  • [get | view] (2008-11-18 12:03:33, 0.4 KB) [[attachment:unicode]]
  • [get | view] (2008-10-29 22:00:15, 0.4 KB) [[attachment:unixtime2time.c]]
  • [get | view] (2008-10-29 15:55:18, 0.1 KB) [[attachment:win]]
 All files | Selected Files: delete move to page copy to page

You are not allowed to attach a file to this page.