svn commit: samba r23520 - in branches/SAMBA_4_0/source/client: .

tridge at samba.org tridge at samba.org
Sat Jun 16 17:14:03 GMT 2007


Author: tridge
Date: 2007-06-16 17:14:02 +0000 (Sat, 16 Jun 2007)
New Revision: 23520

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=23520

Log:

display shadow copy information in 'allinfo'

Modified:
   branches/SAMBA_4_0/source/client/client.c


Changeset:
Modified: branches/SAMBA_4_0/source/client/client.c
===================================================================
--- branches/SAMBA_4_0/source/client/client.c	2007-06-16 17:13:42 UTC (rev 23519)
+++ branches/SAMBA_4_0/source/client/client.c	2007-06-16 17:14:02 UTC (rev 23520)
@@ -1726,6 +1726,7 @@
 	char *fname;
 	union smb_fileinfo finfo;
 	NTSTATUS status;
+	int fnum;
 
 	if (!args[1]) {
 		d_printf("allinfo <filename>\n");
@@ -1809,6 +1810,40 @@
 		d_printf("\tcluster_shift   %ld\n", (long)finfo.compression_info.out.cluster_shift);
 	}
 
+	/* shadow copies if available */
+	fnum = smbcli_open(ctx->cli->tree, fname, O_RDONLY, DENY_NONE);
+	if (fnum != -1) {
+		struct smb_shadow_copy info;
+		int i;
+		info.in.file.fnum = fnum;
+		info.in.max_data = ~0;
+		status = smb_raw_shadow_data(ctx->cli->tree, ctx, &info);
+		if (NT_STATUS_IS_OK(status)) {
+			d_printf("\tshadow_copy: %u volumes  %u names\n",
+				 info.out.num_volumes, info.out.num_names);
+			for (i=0;i<info.out.num_names;i++) {
+				d_printf("\t%s\n", info.out.names[i]);
+				finfo.generic.level = RAW_FILEINFO_ALL_INFO;
+				finfo.generic.in.file.path = talloc_asprintf(ctx, "%s%s", 
+									     info.out.names[i], fname); 
+				status = smb_raw_pathinfo(ctx->cli->tree, ctx, &finfo);
+				if (NT_STATUS_EQUAL(status, NT_STATUS_OBJECT_PATH_NOT_FOUND)) {
+					continue;
+				}
+				if (!NT_STATUS_IS_OK(status)) {
+					d_printf("%s - %s\n", finfo.generic.in.file.path, 
+						 nt_errstr(status));
+					return 1;
+				}
+				
+				d_printf("\t\tcreate_time:    %s\n", nt_time_string(ctx, finfo.all_info.out.create_time));
+				d_printf("\t\twrite_time:     %s\n", nt_time_string(ctx, finfo.all_info.out.write_time));
+				d_printf("\t\tchange_time:    %s\n", nt_time_string(ctx, finfo.all_info.out.change_time));
+				d_printf("\t\tsize:           %lu\n", (unsigned long)finfo.all_info.out.size);
+			}
+		}
+	}
+	
 	return 0;
 }
 



More information about the samba-cvs mailing list