Author: pschweitzer
Date: Wed Sep  6 15:32:02 2017
New Revision: 75774

URL: http://svn.reactos.org/svn/reactos?rev=75774&view=rev
Log:
[FSUTIL]
Implement fsutil fsinfo drives and fsutil fsinfo drivetype

Added:
    trunk/reactos/base/applications/cmdutils/fsutil/fsinfo.c   (with props)
Modified:
    trunk/reactos/base/applications/cmdutils/fsutil/CMakeLists.txt
    trunk/reactos/base/applications/cmdutils/fsutil/fsutil.c

Modified: trunk/reactos/base/applications/cmdutils/fsutil/CMakeLists.txt
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/cmdutils/fsutil/CMakeLists.txt?rev=75774&r1=75773&r2=75774&view=diff
==============================================================================
--- trunk/reactos/base/applications/cmdutils/fsutil/CMakeLists.txt      
[iso-8859-1] (original)
+++ trunk/reactos/base/applications/cmdutils/fsutil/CMakeLists.txt      
[iso-8859-1] Wed Sep  6 15:32:02 2017
@@ -1,6 +1,7 @@
 list(APPEND SOURCE
     common.c
     dirty.c
+    fsinfo.c
     fsutil.c
     fsutil.h)
 add_executable(fsutil ${SOURCE} fsutil.rc)

Added: trunk/reactos/base/applications/cmdutils/fsutil/fsinfo.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/cmdutils/fsutil/fsinfo.c?rev=75774
==============================================================================
--- trunk/reactos/base/applications/cmdutils/fsutil/fsinfo.c    (added)
+++ trunk/reactos/base/applications/cmdutils/fsutil/fsinfo.c    [iso-8859-1] 
Wed Sep  6 15:32:02 2017
@@ -0,0 +1,109 @@
+/*
+ * COPYRIGHT:       See COPYING in the top level directory
+ * PROJECT:         ReactOS FS utility tool
+ * FILE:            base/applications/cmdutils/fsinfo.c
+ * PURPOSE:         FSutil file systems information
+ * PROGRAMMERS:     Pierre Schweitzer <pie...@reactos.org>
+ */
+
+/* Add handlers here for subcommands */
+static int DrivesMain(int argc, const TCHAR *argv[]);
+static int DriveTypeMain(int argc, const TCHAR *argv[]);
+static HandlerItem HandlersList[] =
+{
+    /* Proc, name, help */
+    { DrivesMain, _T("drives"), _T("Enumerates the drives") },
+    { DriveTypeMain, _T("drivetype"), _T("Provides the type of a drive") },
+};
+
+static int
+DrivesMain(int argc, const TCHAR *argv[])
+{
+    UINT i;
+    DWORD Drives;
+
+    /* Get the drives bitmap */
+    Drives = GetLogicalDrives();
+    if (Drives == 0)
+    {
+        _ftprintf(stderr, _T("Error: %d\n"), GetLastError());
+        return 1;
+    }
+
+    /* And output any found drive */
+    _ftprintf(stdout, _T("Drives:"));
+    for (i = 0; i < 26; i++)
+    {
+        if (Drives & (1 << i))
+        {
+            _ftprintf(stdout, _T(" %c:\\"), 'A' + i);
+        }
+    }
+    _ftprintf(stdout, _T("\n"));
+
+    return 0;
+}
+
+static int
+DriveTypeMain(int argc, const TCHAR *argv[])
+{
+    UINT Type;
+
+    /* We need a volume (letter) */
+    if (argc < 2)
+    {
+        _ftprintf(stderr, _T("Usage: fsutil fsinfo drivetype <volume>\n"));
+        _ftprintf(stderr, _T("\tFor example: fsutil fsinfo drivetype c:\n"));
+        return 1;
+    }
+
+    /* Get its drive type and make it readable */
+    Type = GetDriveType(argv[1]);
+    switch (Type)
+    {
+        case DRIVE_UNKNOWN:
+            _ftprintf(stdout, _T("%s - unknown drive type\n"), argv[1]);
+            break;
+
+        case DRIVE_NO_ROOT_DIR:
+            _ftprintf(stdout, _T("%s - not a root directory\n"), argv[1]);
+            break;
+
+        case DRIVE_REMOVABLE:
+            _ftprintf(stdout, _T("%s - removable drive\n"), argv[1]);
+            break;
+
+        case DRIVE_FIXED:
+            _ftprintf(stdout, _T("%s - fixed drive\n"), argv[1]);
+            break;
+
+        case DRIVE_REMOTE:
+            _ftprintf(stdout, _T("%s - remote or network drive\n"), argv[1]);
+            break;
+
+        case DRIVE_CDROM:
+            _ftprintf(stdout, _T("%s - CD-ROM drive\n"), argv[1]);
+            break;
+
+        case DRIVE_RAMDISK:
+            _ftprintf(stdout, _T("%s - RAM disk drive\n"), argv[1]);
+            break;
+    }
+
+    return 0;
+}
+
+static void
+PrintUsage(const TCHAR * Command)
+{
+    PrintDefaultUsage(_T(" FSINFO "), Command, (HandlerItem *)&HandlersList,
+                      (sizeof(HandlersList) / sizeof(HandlersList[0])));
+}
+
+int
+FsInfoMain(int argc, const TCHAR *argv[])
+{
+    return FindHandler(argc, argv, (HandlerItem *)&HandlersList,
+                       (sizeof(HandlersList) / sizeof(HandlersList[0])),
+                       PrintUsage);
+}

Propchange: trunk/reactos/base/applications/cmdutils/fsutil/fsinfo.c
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: trunk/reactos/base/applications/cmdutils/fsutil/fsutil.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/cmdutils/fsutil/fsutil.c?rev=75774&r1=75773&r2=75774&view=diff
==============================================================================
--- trunk/reactos/base/applications/cmdutils/fsutil/fsutil.c    [iso-8859-1] 
(original)
+++ trunk/reactos/base/applications/cmdutils/fsutil/fsutil.c    [iso-8859-1] 
Wed Sep  6 15:32:02 2017
@@ -10,10 +10,12 @@
 
 /* Add handlers here for commands */
 int DirtyMain(int argc, const TCHAR *argv[]);
+int FsInfoMain(int argc, const TCHAR *argv[]);
 static HandlerItem HandlersList[] =
 {
     /* Proc, name, help */
     { DirtyMain, _T("dirty"), _T("Manipulates the dirty bit") },
+    { FsInfoMain, _T("fsinfo"), _T("Gathers informations about file systems") 
},
 };
 
 static void


Reply via email to