Author: hbelusca
Date: Sun Jun 30 12:38:11 2013
New Revision: 59385

URL: http://svn.reactos.org/svn/reactos?rev=59385&view=rev
Log:
[CMD]
Fix whitespace (part 5/6) (convert tabs into 4-space indent).

Modified:
    trunk/reactos/base/shell/cmd/chcp.c
    trunk/reactos/base/shell/cmd/date.c
    trunk/reactos/base/shell/cmd/dir.c

Modified: trunk/reactos/base/shell/cmd/chcp.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/chcp.c?rev=59385&r1=59384&r2=59385&view=diff
==============================================================================
--- trunk/reactos/base/shell/cmd/chcp.c [iso-8859-1] (original)
+++ trunk/reactos/base/shell/cmd/chcp.c [iso-8859-1] Sun Jun 30 12:38:11 2013
@@ -73,7 +73,6 @@
     }
 
     freep (arg);
-
     return 0;
 }
 

Modified: trunk/reactos/base/shell/cmd/date.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/date.c?rev=59385&r1=59384&r2=59385&view=diff
==============================================================================
--- trunk/reactos/base/shell/cmd/date.c [iso-8859-1] (original)
+++ trunk/reactos/base/shell/cmd/date.c [iso-8859-1] Sun Jun 30 12:38:11 2013
@@ -27,8 +27,8 @@
  *    04-Feb-1999 (Eric Kohl)
  *        Fixed date input bug.
  *
- *    03-Apr-2005 (Magnus Olsen) <mag...@greatlord.com>)
- *        Remove all hardcode string to En.rc
+ *    03-Apr-2005 (Magnus Olsen) <mag...@greatlord.com>
+ *        Remove all hardcoded strings in En.rc
  */
 
 #include "precomp.h"
@@ -38,227 +38,222 @@
 
 static WORD awMonths[2][13] =
 {
-       {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
-       {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
+    {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
+    {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
 };
 
 
 static VOID
 PrintDateString (VOID)
 {
-       switch (nDateFormat)
-       {
-               case 0: /* mmddyy */
-               default:
-                       ConOutResPrintf(STRING_DATE_HELP1, cDateSeparator, 
cDateSeparator);
-                       break;
-
-               case 1: /* ddmmyy */
-                       ConOutResPrintf(STRING_DATE_HELP2, cDateSeparator, 
cDateSeparator);
-                       break;
-
-               case 2: /* yymmdd */
-                       ConOutResPrintf(STRING_DATE_HELP3, cDateSeparator, 
cDateSeparator);
-                       break;
-       }
-}
-
+    switch (nDateFormat)
+    {
+        case 0: /* mmddyy */
+        default:
+            ConOutResPrintf(STRING_DATE_HELP1, cDateSeparator, cDateSeparator);
+            break;
+
+        case 1: /* ddmmyy */
+            ConOutResPrintf(STRING_DATE_HELP2, cDateSeparator, cDateSeparator);
+            break;
+
+        case 2: /* yymmdd */
+            ConOutResPrintf(STRING_DATE_HELP3, cDateSeparator, cDateSeparator);
+            break;
+    }
+}
 
 static BOOL
 ReadNumber (LPTSTR *s, LPWORD lpwValue)
 {
-       if (_istdigit (**s))
-       {
-               while (_istdigit (**s))
-               {
-                       *lpwValue = *lpwValue * 10 + **s - _T('0');
-                       (*s)++;
-               }
-               return TRUE;
-       }
-       return FALSE;
-}
-
+    if (_istdigit (**s))
+    {
+        while (_istdigit (**s))
+        {
+            *lpwValue = *lpwValue * 10 + **s - _T('0');
+            (*s)++;
+        }
+        return TRUE;
+    }
+    return FALSE;
+}
 
 static BOOL
 ReadSeparator (LPTSTR *s)
 {
-       if (**s == _T('/') || **s == _T('-') || **s == cDateSeparator)
-       {
-               (*s)++;
-               return TRUE;
-       }
-       return FALSE;
-}
-
+    if (**s == _T('/') || **s == _T('-') || **s == cDateSeparator)
+    {
+        (*s)++;
+        return TRUE;
+    }
+    return FALSE;
+}
 
 static BOOL
 ParseDate (LPTSTR s)
 {
-       SYSTEMTIME d;
-       unsigned char leap;
-       LPTSTR p = s;
-
-       if (!*s)
-               return TRUE;
-
-       GetLocalTime (&d);
-
-       d.wYear = 0;
-       d.wDay = 0;
-       d.wMonth = 0;
-
-       switch (nDateFormat)
-       {
-               case 0: /* mmddyy */
-               default:
-                       if (!ReadNumber (&p, &d.wMonth))
-                               return FALSE;
-                       if (!ReadSeparator (&p))
-                               return FALSE;
-                       if (!ReadNumber (&p, &d.wDay))
-                               return FALSE;
-                       if (!ReadSeparator (&p))
-                               return FALSE;
-                       if (!ReadNumber (&p, &d.wYear))
-                               return FALSE;
-                       break;
-
-               case 1: /* ddmmyy */
-                       if (!ReadNumber (&p, &d.wDay))
-                               return FALSE;
-                       if (!ReadSeparator (&p))
-                               return FALSE;
-                       if (!ReadNumber (&p, &d.wMonth))
-                               return FALSE;
-                       if (!ReadSeparator (&p))
-                               return FALSE;
-                       if (!ReadNumber (&p, &d.wYear))
-                               return FALSE;
-                       break;
-
-               case 2: /* yymmdd */
-                       if (!ReadNumber (&p, &d.wYear))
-                               return FALSE;
-                       if (!ReadSeparator (&p))
-                               return FALSE;
-                       if (!ReadNumber (&p, &d.wMonth))
-                               return FALSE;
-                       if (!ReadSeparator (&p))
-                               return FALSE;
-                       if (!ReadNumber (&p, &d.wDay))
-                               return FALSE;
-                       break;
-       }
-
-       /* if only entered two digits: */
-       /*   assume 2000's if value less than 80 */
-       /*   assume 1900's if value greater or equal 80 */
-       if (d.wYear <= 99)
-       {
-               if (d.wYear >= 80)
-                       d.wYear = 1900 + d.wYear;
-               else
-                       d.wYear = 2000 + d.wYear;
-       }
-
-       leap = (!(d.wYear % 4) && (d.wYear % 100)) || !(d.wYear % 400);
-
-       if ((d.wMonth >= 1 && d.wMonth <= 12) &&
-               (d.wDay >= 1 && d.wDay <= awMonths[leap][d.wMonth]) &&
-               (d.wYear >= 1980 && d.wYear <= 2099))
-       {
-               SetLocalTime (&d);
-               return TRUE;
-       }
-
-       return FALSE;
+    SYSTEMTIME d;
+    unsigned char leap;
+    LPTSTR p = s;
+
+    if (!*s)
+        return TRUE;
+
+    GetLocalTime (&d);
+
+    d.wYear = 0;
+    d.wDay = 0;
+    d.wMonth = 0;
+
+    switch (nDateFormat)
+    {
+        case 0: /* mmddyy */
+        default:
+            if (!ReadNumber (&p, &d.wMonth))
+                return FALSE;
+            if (!ReadSeparator (&p))
+                return FALSE;
+            if (!ReadNumber (&p, &d.wDay))
+                return FALSE;
+            if (!ReadSeparator (&p))
+                return FALSE;
+            if (!ReadNumber (&p, &d.wYear))
+                return FALSE;
+            break;
+
+        case 1: /* ddmmyy */
+            if (!ReadNumber (&p, &d.wDay))
+                return FALSE;
+            if (!ReadSeparator (&p))
+                return FALSE;
+            if (!ReadNumber (&p, &d.wMonth))
+                return FALSE;
+            if (!ReadSeparator (&p))
+                return FALSE;
+            if (!ReadNumber (&p, &d.wYear))
+                return FALSE;
+            break;
+
+        case 2: /* yymmdd */
+            if (!ReadNumber (&p, &d.wYear))
+                return FALSE;
+            if (!ReadSeparator (&p))
+                return FALSE;
+            if (!ReadNumber (&p, &d.wMonth))
+                return FALSE;
+            if (!ReadSeparator (&p))
+                return FALSE;
+            if (!ReadNumber (&p, &d.wDay))
+                return FALSE;
+            break;
+    }
+
+    /* if only entered two digits: */
+    /*   assume 2000's if value less than 80 */
+    /*   assume 1900's if value greater or equal 80 */
+    if (d.wYear <= 99)
+    {
+        if (d.wYear >= 80)
+            d.wYear = 1900 + d.wYear;
+        else
+            d.wYear = 2000 + d.wYear;
+    }
+
+    leap = (!(d.wYear % 4) && (d.wYear % 100)) || !(d.wYear % 400);
+
+    if ((d.wMonth >= 1 && d.wMonth <= 12) &&
+        (d.wDay >= 1 && d.wDay <= awMonths[leap][d.wMonth]) &&
+        (d.wYear >= 1980 && d.wYear <= 2099))
+    {
+        SetLocalTime (&d);
+        return TRUE;
+    }
+
+    return FALSE;
 }
 
 
 INT cmd_date (LPTSTR param)
 {
-       LPTSTR *arg;
-       INT    argc;
-       INT    i;
-       BOOL   bPrompt = TRUE;
-       INT    nDateString = -1;
-
-       if (!_tcsncmp (param, _T("/?"), 2))
-       {
-               ConOutResPaging(TRUE,STRING_DATE_HELP4);
-               return 0;
-       }
-
-  nErrorLevel = 0;
-
-       /* build parameter array */
-       arg = split (param, &argc, FALSE, FALSE);
-
-       /* check for options */
-       for (i = 0; i < argc; i++)
-       {
-               if (_tcsicmp (arg[i], _T("/t")) == 0)
-                       bPrompt = FALSE;
-               if ((*arg[i] != _T('/')) && (nDateString == -1))
-                       nDateString = i;
-       }
-
-       if (nDateString == -1)
-               ConOutPrintf(_T("%s"), GetDateString());
-
-       if (!bPrompt)
-       {
-               freep (arg);
-               return 0;
-       }
-
-       if (nDateString == -1)
-       {
-               while (TRUE)  /* forever loop */
-               {
-                       TCHAR s[40];
-
-                       PrintDateString ();
-                       ConInString (s, 40);
-                       TRACE ("\'%s\'\n", debugstr_aw(s));
-                       while (*s && s[_tcslen (s) - 1] < _T(' '))
-                               s[_tcslen (s) - 1] = _T('\0');
-                       if (ParseDate (s))
-                       {
-                               freep (arg);
-                               return 0;
-                       }
-                       ConErrResPuts(STRING_DATE_ERROR);
-
-               }
-       }
-       else
-       {
-    if (!ParseDate (arg[nDateString]))
-    {
-      while (TRUE)  /* forever loop */
-                 {
-                         TCHAR s[40];
-        ConErrResPuts(STRING_DATE_ERROR);
-
-                         PrintDateString ();
-                         ConInString (s, 40);
-
-        while (*s && s[_tcslen (s) - 1] < _T(' '))
-                                 s[_tcslen (s) - 1] = _T('\0');
-                         if (ParseDate (s))
-                         {
-                                 freep (arg);
-                                 return 0;
-                         }
-      }
-    }
-       }
-
-       freep (arg);
-
-       return 0;
+    LPTSTR *arg;
+    INT    argc;
+    INT    i;
+    BOOL   bPrompt = TRUE;
+    INT    nDateString = -1;
+
+    if (!_tcsncmp (param, _T("/?"), 2))
+    {
+        ConOutResPaging(TRUE,STRING_DATE_HELP4);
+        return 0;
+    }
+
+    nErrorLevel = 0;
+
+    /* build parameter array */
+    arg = split (param, &argc, FALSE, FALSE);
+
+    /* check for options */
+    for (i = 0; i < argc; i++)
+    {
+        if (_tcsicmp (arg[i], _T("/t")) == 0)
+            bPrompt = FALSE;
+        if ((*arg[i] != _T('/')) && (nDateString == -1))
+            nDateString = i;
+    }
+
+    if (nDateString == -1)
+        ConOutPrintf(_T("%s"), GetDateString());
+
+    if (!bPrompt)
+    {
+        freep (arg);
+        return 0;
+    }
+
+    if (nDateString == -1)
+    {
+        while (TRUE)  /* forever loop */
+        {
+            TCHAR s[40];
+
+            PrintDateString ();
+            ConInString (s, 40);
+            TRACE ("\'%s\'\n", debugstr_aw(s));
+            while (*s && s[_tcslen (s) - 1] < _T(' '))
+                s[_tcslen (s) - 1] = _T('\0');
+            if (ParseDate (s))
+            {
+                freep (arg);
+                return 0;
+            }
+            ConErrResPuts(STRING_DATE_ERROR);
+        }
+    }
+    else
+    {
+        if (!ParseDate (arg[nDateString]))
+        {
+            while (TRUE)  /* forever loop */
+            {
+                TCHAR s[40];
+                ConErrResPuts(STRING_DATE_ERROR);
+
+                PrintDateString ();
+                ConInString (s, 40);
+
+                while (*s && s[_tcslen (s) - 1] < _T(' '))
+                    s[_tcslen (s) - 1] = _T('\0');
+                if (ParseDate (s))
+                {
+                    freep (arg);
+                    return 0;
+                }
+            }
+        }
+    }
+
+    freep (arg);
+    return 0;
 }
 #endif /* INCLUDE_CMD_DATE */
 

Modified: trunk/reactos/base/shell/cmd/dir.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/dir.c?rev=59385&r1=59384&r2=59385&view=diff
==============================================================================
--- trunk/reactos/base/shell/cmd/dir.c  [iso-8859-1] (original)
+++ trunk/reactos/base/shell/cmd/dir.c  [iso-8859-1] Sun Jun 30 12:38:11 2013
@@ -1048,32 +1048,32 @@
  * The function that prints in bare format
  */
 static VOID
-DirPrintBareList(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
-                                DWORD dwCount,                 /* [IN] The 
number of files */
-                                LPTSTR lpCurPath,              /* [IN] Full 
path of current directory */
-                                LPDIRSWITCHFLAGS lpFlags)      /* [IN] The 
flags used */
-{
-       DWORD i;
-
-       for (i = 0; i < dwCount && !bCtrlBreak; i++)
-       {
-               if ((_tcscmp(ptrFiles[i]->cFileName, _T(".")) == 0) ||
-                   (_tcscmp(ptrFiles[i]->cFileName, _T("..")) == 0))
-               {
-                       /* at bare format we don't print "." and ".." folder */
-                       continue;
-               }
-               if (lpFlags->bRecursive)
-               {
-                       /* at recursive mode we print full path of file */
-                       DirPrintf(lpFlags, _T("%s\\%s\n"), lpCurPath, 
ptrFiles[i]->cFileName);
-               }
-               else
-               {
-                       /* if we are not in recursive mode we print the file 
names */
-                       DirPrintf(lpFlags, _T("%s\n"), ptrFiles[i]->cFileName);
-               }
-       }
+DirPrintBareList(LPWIN32_FIND_DATA ptrFiles[],  /* [IN] Files' Info */
+                 DWORD dwCount,                 /* [IN] The number of files */
+                 LPTSTR lpCurPath,              /* [IN] Full path of current 
directory */
+                 LPDIRSWITCHFLAGS lpFlags)      /* [IN] The flags used */
+{
+    DWORD i;
+
+    for (i = 0; i < dwCount && !bCtrlBreak; i++)
+    {
+        if ((_tcscmp(ptrFiles[i]->cFileName, _T(".")) == 0) ||
+            (_tcscmp(ptrFiles[i]->cFileName, _T("..")) == 0))
+        {
+            /* at bare format we don't print "." and ".." folder */
+            continue;
+        }
+        if (lpFlags->bRecursive)
+        {
+            /* at recursive mode we print full path of file */
+            DirPrintf(lpFlags, _T("%s\\%s\n"), lpCurPath, 
ptrFiles[i]->cFileName);
+        }
+        else
+        {
+            /* if we are not in recursive mode we print the file names */
+            DirPrintf(lpFlags, _T("%s\n"), ptrFiles[i]->cFileName);
+        }
+    }
 }
 
 
@@ -1083,57 +1083,55 @@
  * The functions that prints the files list
  */
 static VOID
-DirPrintFiles(LPWIN32_FIND_DATA ptrFiles[],    /* [IN] Files' Info */
-                         DWORD dwCount,                        /* [IN] The 
quantity of files */
-                         TCHAR *szCurPath,                     /* [IN] Full 
path of current directory */
-                         LPDIRSWITCHFLAGS lpFlags)             /* [IN] The 
flags used */
-{
-       TCHAR szMsg[RC_STRING_MAX_SIZE];
-       TCHAR szTemp[MAX_PATH];                 /* A buffer to format the 
directory header */
-
-       /* Print trailing backslash for root directory of drive */
-       _tcscpy(szTemp, szCurPath);
-       if (_tcslen(szTemp) == 2 && szTemp[1] == _T(':'))
-               _tcscat(szTemp, _T("\\"));
-
-       /* Condition to print header:
-          We are not printing in bare format
-          and if we are in recursive mode... we must have results */
-       if (!(lpFlags->bBareFormat ) && !((lpFlags->bRecursive) && (dwCount <= 
0)))
-       {
-               LoadString(CMD_ModuleHandle, STRING_DIR_HELP7, szMsg, 
RC_STRING_MAX_SIZE);
-               if (DirPrintf(lpFlags, szMsg, szTemp))
-                       return;
-       }
-
-       if (lpFlags->bBareFormat)
-       {
-               /* Bare format */
-               DirPrintBareList(ptrFiles, dwCount, szCurPath, lpFlags);
-       }
-       else if(lpFlags->bShortName)
-       {
-               /* New list style / Short names */
-               DirPrintNewList(ptrFiles, dwCount, szCurPath, lpFlags);
-       }
-       else if(lpFlags->bWideListColSort || lpFlags->bWideList)
-       {
-               /* Wide list */
-               DirPrintWideList(ptrFiles, dwCount, szCurPath, lpFlags);
-       }
-       else if (lpFlags->bNewLongList )
-       {
-               /* New list style*/
-               DirPrintNewList(ptrFiles, dwCount, szCurPath, lpFlags);
-       }
-       else
-       {
-               /* If nothing is selected old list is the default */
-               DirPrintOldList(ptrFiles, dwCount, szCurPath, lpFlags);
-       }
-}
-
-
+DirPrintFiles(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
+              DWORD dwCount,                /* [IN] The quantity of files */
+              TCHAR *szCurPath,             /* [IN] Full path of current 
directory */
+              LPDIRSWITCHFLAGS lpFlags)     /* [IN] The flags used */
+{
+    TCHAR szMsg[RC_STRING_MAX_SIZE];
+    TCHAR szTemp[MAX_PATH]; /* A buffer to format the directory header */
+
+    /* Print trailing backslash for root directory of drive */
+    _tcscpy(szTemp, szCurPath);
+    if (_tcslen(szTemp) == 2 && szTemp[1] == _T(':'))
+        _tcscat(szTemp, _T("\\"));
+
+    /* Condition to print header:
+       We are not printing in bare format
+       and if we are in recursive mode... we must have results */
+    if (!(lpFlags->bBareFormat ) && !((lpFlags->bRecursive) && (dwCount <= 0)))
+    {
+        LoadString(CMD_ModuleHandle, STRING_DIR_HELP7, szMsg, 
RC_STRING_MAX_SIZE);
+        if (DirPrintf(lpFlags, szMsg, szTemp))
+            return;
+    }
+
+    if (lpFlags->bBareFormat)
+    {
+        /* Bare format */
+        DirPrintBareList(ptrFiles, dwCount, szCurPath, lpFlags);
+    }
+    else if(lpFlags->bShortName)
+    {
+        /* New list style / Short names */
+        DirPrintNewList(ptrFiles, dwCount, szCurPath, lpFlags);
+    }
+    else if(lpFlags->bWideListColSort || lpFlags->bWideList)
+    {
+        /* Wide list */
+        DirPrintWideList(ptrFiles, dwCount, szCurPath, lpFlags);
+    }
+    else if (lpFlags->bNewLongList )
+    {
+        /* New list style*/
+        DirPrintNewList(ptrFiles, dwCount, szCurPath, lpFlags);
+    }
+    else
+    {
+        /* If nothing is selected old list is the default */
+        DirPrintOldList(ptrFiles, dwCount, szCurPath, lpFlags);
+    }
+}
 
 /*
  * CompareFiles
@@ -1141,99 +1139,99 @@
  * Compares 2 files based on the order criteria
  */
 static BOOL
-CompareFiles(LPWIN32_FIND_DATA lpFile1,        /* [IN] A pointer to 
WIN32_FIND_DATA of file 1 */
-                        LPWIN32_FIND_DATA lpFile2,     /* [IN] A pointer to 
WIN32_FIND_DATA of file 2 */
-                        LPDIRSWITCHFLAGS lpFlags)      /* [IN] The flags that 
we use to list */
+CompareFiles(LPWIN32_FIND_DATA lpFile1, /* [IN] A pointer to WIN32_FIND_DATA 
of file 1 */
+             LPWIN32_FIND_DATA lpFile2, /* [IN] A pointer to WIN32_FIND_DATA 
of file 2 */
+             LPDIRSWITCHFLAGS lpFlags)  /* [IN] The flags that we use to list 
*/
 {
   ULARGE_INTEGER u64File1;
   ULARGE_INTEGER u64File2;
   int i;
-  long iComp = 0;                                      /* The comparison 
result */
-
-       /* Calculate critiries by order given from user */
-       for (i = 0;i < lpFlags->stOrderBy.sCriteriaCount;i++)
-       {
-
-               /* Calculate criteria */
-               switch(lpFlags->stOrderBy.eCriteria[i])
-               {
-               case ORDER_SIZE:                /* Order by size /o:s */
-                       /* concat the 32bit integers to a 64bit */
-                       u64File1.LowPart = lpFile1->nFileSizeLow;
-                       u64File1.HighPart = lpFile1->nFileSizeHigh;
-                       u64File2.LowPart = lpFile2->nFileSizeLow;
-                       u64File2.HighPart = lpFile2->nFileSizeHigh;
-
-                       /* In case that differnce is too big for a long */
-                       if (u64File1.QuadPart < u64File2.QuadPart)
-                               iComp = -1;
-                       else if (u64File1.QuadPart > u64File2.QuadPart)
-                               iComp = 1;
-                       else
-                               iComp = 0;
-                       break;
-
-               case ORDER_DIRECTORY:   /* Order by directory attribute /o:g */
-                       iComp = ((lpFile2->dwFileAttributes & 
FILE_ATTRIBUTE_DIRECTORY)-
-                               (lpFile1->dwFileAttributes & 
FILE_ATTRIBUTE_DIRECTORY));
-                       break;
-
-               case ORDER_EXTENSION:   /* Order by extension name /o:e */
-                       iComp = 
_tcsicmp(getExt(lpFile1->cFileName),getExt(lpFile2->cFileName));
-                       break;
-
-               case ORDER_NAME:                /* Order by filename /o:n */
-                       iComp = _tcsicmp(lpFile1->cFileName, 
lpFile2->cFileName);
-                       break;
-
-               case ORDER_TIME:                /* Order by file's time /o:t */
-                       /* We compare files based on the time field selected by 
/t */
-                       switch(lpFlags->stTimeField.eTimeField)
-                       {
-                       case TF_CREATIONDATE:
-                               /* concat the 32bit integers to a 64bit */
-                               u64File1.LowPart = 
lpFile1->ftCreationTime.dwLowDateTime;
-                               u64File1.HighPart = 
lpFile1->ftCreationTime.dwHighDateTime ;
-                               u64File2.LowPart = 
lpFile2->ftCreationTime.dwLowDateTime;
-                               u64File2.HighPart = 
lpFile2->ftCreationTime.dwHighDateTime ;
-                               break;
-                       case TF_LASTACCESSEDDATE :
-                               /* concat the 32bit integers to a 64bit */
-                               u64File1.LowPart = 
lpFile1->ftLastAccessTime.dwLowDateTime;
-                               u64File1.HighPart = 
lpFile1->ftLastAccessTime.dwHighDateTime ;
-                               u64File2.LowPart = 
lpFile2->ftLastAccessTime.dwLowDateTime;
-                               u64File2.HighPart = 
lpFile2->ftLastAccessTime.dwHighDateTime ;
-                               break;
-                       case TF_MODIFIEDDATE:
-                               /* concat the 32bit integers to a 64bit */
-                               u64File1.LowPart = 
lpFile1->ftLastWriteTime.dwLowDateTime;
-                               u64File1.HighPart = 
lpFile1->ftLastWriteTime.dwHighDateTime ;
-                               u64File2.LowPart = 
lpFile2->ftLastWriteTime.dwLowDateTime;
-                               u64File2.HighPart = 
lpFile2->ftLastWriteTime.dwHighDateTime ;
-                               break;
-                       }
-
-                       /* In case that differnce is too big for a long */
-                       if (u64File1.QuadPart < u64File2.QuadPart)
-                               iComp = -1;
-                       else if (u64File1.QuadPart > u64File2.QuadPart)
-                               iComp = 1;
-                       else
-                               iComp = 0;
-                       break;
-               }
-
-               /* Reverse if desired */
-               if (lpFlags->stOrderBy.bCriteriaRev[i])
-                       iComp *= -1;
-
-               /* If that criteria was enough for distinguishing
-                  the files/dirs,there is no need to calculate the others*/
-               if (iComp != 0) break;
-       }
-
-       /* Translate the value of iComp to boolean */
-       return iComp > 0;
+  long iComp = 0;   /* The comparison result */
+
+    /* Calculate critiries by order given from user */
+    for (i = 0;i < lpFlags->stOrderBy.sCriteriaCount;i++)
+    {
+
+        /* Calculate criteria */
+        switch(lpFlags->stOrderBy.eCriteria[i])
+        {
+        case ORDER_SIZE:               /* Order by size /o:s */
+            /* concat the 32bit integers to a 64bit */
+            u64File1.LowPart = lpFile1->nFileSizeLow;
+            u64File1.HighPart = lpFile1->nFileSizeHigh;
+            u64File2.LowPart = lpFile2->nFileSizeLow;
+            u64File2.HighPart = lpFile2->nFileSizeHigh;
+
+            /* In case that differnce is too big for a long */
+            if (u64File1.QuadPart < u64File2.QuadPart)
+                iComp = -1;
+            else if (u64File1.QuadPart > u64File2.QuadPart)
+                iComp = 1;
+            else
+                iComp = 0;
+            break;
+
+        case ORDER_DIRECTORY:  /* Order by directory attribute /o:g */
+            iComp = ((lpFile2->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)-
+                (lpFile1->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY));
+            break;
+
+        case ORDER_EXTENSION:  /* Order by extension name /o:e */
+            iComp = 
_tcsicmp(getExt(lpFile1->cFileName),getExt(lpFile2->cFileName));
+            break;
+
+        case ORDER_NAME:               /* Order by filename /o:n */
+            iComp = _tcsicmp(lpFile1->cFileName, lpFile2->cFileName);
+            break;
+
+        case ORDER_TIME:               /* Order by file's time /o:t */
+            /* We compare files based on the time field selected by /t */
+            switch(lpFlags->stTimeField.eTimeField)
+            {
+            case TF_CREATIONDATE:
+                /* concat the 32bit integers to a 64bit */
+                u64File1.LowPart = lpFile1->ftCreationTime.dwLowDateTime;
+                u64File1.HighPart = lpFile1->ftCreationTime.dwHighDateTime ;
+                u64File2.LowPart = lpFile2->ftCreationTime.dwLowDateTime;
+                u64File2.HighPart = lpFile2->ftCreationTime.dwHighDateTime ;
+                break;
+            case TF_LASTACCESSEDDATE :
+                /* concat the 32bit integers to a 64bit */
+                u64File1.LowPart = lpFile1->ftLastAccessTime.dwLowDateTime;
+                u64File1.HighPart = lpFile1->ftLastAccessTime.dwHighDateTime ;
+                u64File2.LowPart = lpFile2->ftLastAccessTime.dwLowDateTime;
+                u64File2.HighPart = lpFile2->ftLastAccessTime.dwHighDateTime ;
+                break;
+            case TF_MODIFIEDDATE:
+                /* concat the 32bit integers to a 64bit */
+                u64File1.LowPart = lpFile1->ftLastWriteTime.dwLowDateTime;
+                u64File1.HighPart = lpFile1->ftLastWriteTime.dwHighDateTime ;
+                u64File2.LowPart = lpFile2->ftLastWriteTime.dwLowDateTime;
+                u64File2.HighPart = lpFile2->ftLastWriteTime.dwHighDateTime ;
+                break;
+            }
+
+            /* In case that differnce is too big for a long */
+            if (u64File1.QuadPart < u64File2.QuadPart)
+                iComp = -1;
+            else if (u64File1.QuadPart > u64File2.QuadPart)
+                iComp = 1;
+            else
+                iComp = 0;
+            break;
+        }
+
+        /* Reverse if desired */
+        if (lpFlags->stOrderBy.bCriteriaRev[i])
+            iComp *= -1;
+
+        /* If that criteria was enough for distinguishing
+           the files/dirs,there is no need to calculate the others*/
+        if (iComp != 0) break;
+    }
+
+    /* Translate the value of iComp to boolean */
+    return iComp > 0;
 }
 
 /*
@@ -1242,44 +1240,42 @@
  * Sort files by the order criterias using quicksort method
  */
 static VOID
-QsortFiles(LPWIN32_FIND_DATA ptrArray[],       /* [IN/OUT] The array with file 
info pointers */
-          int i,                               /* [IN]     The index of first 
item in array */
-          int j,                               /* [IN]     The index to last 
item in array */
-          LPDIRSWITCHFLAGS lpFlags)            /* [IN]     The flags that we 
will use to sort */
-{
-       LPWIN32_FIND_DATA lpTemp;       /* A temporary pointer */
-       BOOL Way;
-
-       if (i < j)
-       {
-               int First = i, Last = j, Temp;
-               Way = TRUE;
-               while (i != j)
-               {
-                       if (Way == CompareFiles(ptrArray[i], ptrArray[j], 
lpFlags))
-                       {
-                               /* Swap the pointers of the array */
-                               lpTemp = ptrArray[i];
-                               ptrArray[i]= ptrArray[j];
-                               ptrArray[j] = lpTemp;
-
-                               /* Swap the indexes for inverting sorting */
-                               Temp = i;
-                               i = j;
-                               j =Temp;
-
-                               Way = !Way;
-                       }
-
-                       j += (!Way - Way);
-               }
-
-               QsortFiles(ptrArray,First, i-1, lpFlags);
-               QsortFiles(ptrArray,i+1,Last, lpFlags);
-       }
-}
-
-
+QsortFiles(LPWIN32_FIND_DATA ptrArray[],    /* [IN/OUT] The array with file 
info pointers */
+           int i,                           /* [IN]     The index of first 
item in array */
+           int j,                           /* [IN]     The index to last item 
in array */
+           LPDIRSWITCHFLAGS lpFlags)        /* [IN]     The flags that we will 
use to sort */
+{
+    LPWIN32_FIND_DATA lpTemp;   /* A temporary pointer */
+    BOOL Way;
+
+    if (i < j)
+    {
+        int First = i, Last = j, Temp;
+        Way = TRUE;
+        while (i != j)
+        {
+            if (Way == CompareFiles(ptrArray[i], ptrArray[j], lpFlags))
+            {
+                /* Swap the pointers of the array */
+                lpTemp = ptrArray[i];
+                ptrArray[i]= ptrArray[j];
+                ptrArray[j] = lpTemp;
+
+                /* Swap the indexes for inverting sorting */
+                Temp = i;
+                i = j;
+                j =Temp;
+
+                Way = !Way;
+            }
+
+            j += (!Way - Way);
+        }
+
+        QsortFiles(ptrArray,First, i-1, lpFlags);
+        QsortFiles(ptrArray,i+1,Last, lpFlags);
+    }
+}
 
 /*
  * DirList
@@ -1287,244 +1283,243 @@
  * The functions that does everything except for printing results
  */
 static INT
-DirList(LPTSTR szPath,                 /* [IN] The path that dir starts */
-               LPDIRSWITCHFLAGS lpFlags)       /* [IN] The flags of the 
listing */
-{
-       BOOL fPoint;                                                    /* If 
szPath is a file with extension fPoint will be True*/
-       HANDLE hSearch;                                                 /* The 
handle of the search */
-       HANDLE hRecSearch;                                              /* The 
handle for searching recursivly */
-       WIN32_FIND_DATA wfdFileInfo;                    /* The info of file 
that found */
-       LPWIN32_FIND_DATA * ptrFileArray;               /* An array of pointers 
with all the files */
-       PDIRFINDLISTNODE ptrStartNode;                  /* The pointer to the 
first node */
-       PDIRFINDLISTNODE ptrNextNode;                   /* A pointer used for 
relatives refernces */
-       TCHAR szFullPath[MAX_PATH];                             /* The full 
path that we are listing with trailing \ */
-       TCHAR szSubPath[MAX_PATH];
-       LPTSTR pszFilePart;
-       DWORD dwCount;                                                  /* A 
counter of files found in directory */
-       DWORD dwCountFiles;                                             /* 
Counter for files */
-       DWORD dwCountDirs;                                              /* 
Counter for directories */
-       ULONGLONG u64CountBytes;                                /* Counter for 
bytes */
-       ULARGE_INTEGER u64Temp;                                 /* A temporary 
counter */
-
-       /* Initialize Variables */
-       ptrStartNode = NULL;
-       ptrNextNode = NULL;
-       dwCount = 0;
-       dwCountFiles = 0;
-       dwCountDirs = 0;
-       u64CountBytes = 0;
-       fPoint= FALSE;
-
-       /* Create szFullPath */
-       if (GetFullPathName(szPath, sizeof(szFullPath) / sizeof(TCHAR), 
szFullPath, &pszFilePart) == 0)
-       {
-               _tcscpy (szFullPath, szPath);
-               pszFilePart = NULL;
-       }
-
-       /* If no wildcard or file was specified and this is a directory, then
-          display all files in it */
-       if (pszFilePart == NULL || IsExistingDirectory(szFullPath))
-       {
-               pszFilePart = &szFullPath[_tcslen(szFullPath)];
-               if (pszFilePart[-1] != _T('\\'))
-                       *pszFilePart++ = _T('\\');
-               _tcscpy(pszFilePart, _T("*"));
-       }
-
-       /* Prepare the linked list, first node is allocated */
-       ptrStartNode = cmd_alloc(sizeof(DIRFINDLISTNODE));
-       if (ptrStartNode == NULL)
-       {
-               WARN("DEBUG: Cannot allocate memory for ptrStartNode!\n");
-               return 1;       /* Error cannot allocate memory for 1st object 
*/
-       }
-       ptrNextNode = ptrStartNode;
-
-       /*Checking ir szPath is a File with/wout extension*/
-       if (szPath[_tcslen(szPath) - 1] == _T('.'))
-               fPoint= TRUE;
-
-       /* Collect the results for the current folder */
-       hSearch = FindFirstFile(szFullPath, &wfdFileInfo);
-       if (hSearch != INVALID_HANDLE_VALUE)
-       {
-               do
-               {
-                       /*If retrieved FileName has extension,and szPath doesnt 
have extension then JUMP the retrieved FileName*/
-                       
if(_tcschr(wfdFileInfo.cFileName,_T('.'))&&(fPoint==TRUE))
-                       {
-                               continue;
-                       /* Here we filter all the specified attributes */
-                       }else if ((wfdFileInfo.dwFileAttributes & 
lpFlags->stAttribs.dwAttribMask )
-                                       == (lpFlags->stAttribs.dwAttribMask & 
lpFlags->stAttribs.dwAttribVal ))
-                               {
-                                       ptrNextNode->ptrNext = 
cmd_alloc(sizeof(DIRFINDLISTNODE));
-                                       if (ptrNextNode->ptrNext == NULL)
-                                       {
-                                               WARN("DEBUG: Cannot allocate 
memory for ptrNextNode->ptrNext!\n");
-                                               while (ptrStartNode)
-                                               {
-                                                       ptrNextNode = 
ptrStartNode->ptrNext;
-                                                       cmd_free(ptrStartNode);
-                                                       ptrStartNode = 
ptrNextNode;
-                                                       dwCount --;
-                                               }
-                                               FindClose(hSearch);
-                                               return 1;
-                                       }
-
-                               /* If cmd_alloc fails we go to next file in 
hope it works,
-                                  without braking the linked list! */
-                                       if (ptrNextNode->ptrNext)
-                                       {
-                                       /* Copy the info of search at linked 
list */
-                                               
memcpy(&ptrNextNode->ptrNext->stFindInfo,
-                                                               &wfdFileInfo,
-                                                               
sizeof(WIN32_FIND_DATA));
-
-                                       /* If lower case is selected do it here 
*/
-                                               if (lpFlags->bLowerCase)
-                                               {
-                                               
_tcslwr(ptrNextNode->ptrNext->stFindInfo.cAlternateFileName);
-                                               
_tcslwr(ptrNextNode->ptrNext->stFindInfo.cFileName);
-                                               }
-
-                                       /* Continue at next node at linked list 
*/
-                                               ptrNextNode = 
ptrNextNode->ptrNext;
-                                               dwCount ++;
-
-                                       /* Grab statistics */
-                                               if 
(wfdFileInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
-                                               {
-                                               /* Directory */
-                                                       dwCountDirs++;
-                                               }
-                                               else
-                                                       {
-                                               /* File */
-                                                       dwCountFiles++;
-                                                       u64Temp.HighPart = 
wfdFileInfo.nFileSizeHigh;
-                                                       u64Temp.LowPart = 
wfdFileInfo.nFileSizeLow;
-                                                       u64CountBytes += 
u64Temp.QuadPart;
-                                               }
-                                       }
-                               }
-               } while (FindNextFile(hSearch, &wfdFileInfo));
-               FindClose(hSearch);
-       }
-
-       /* Terminate list */
-       ptrNextNode->ptrNext = NULL;
-
-       /* Calculate and allocate space need for making an array of pointers */
-       ptrFileArray = cmd_alloc(sizeof(LPWIN32_FIND_DATA) * dwCount);
-       if (ptrFileArray == NULL)
-       {
-               WARN("DEBUG: Cannot allocate memory for ptrFileArray!\n");
-               while (ptrStartNode)
-               {
-                       ptrNextNode = ptrStartNode->ptrNext;
-                       cmd_free(ptrStartNode);
-                       ptrStartNode = ptrNextNode;
-                       dwCount --;
-               }
-               return 1;
-       }
-
-       /*
-        * Create an array of pointers from the linked list
-        * this will be used to sort and print data, rather than the list
-        */
-       ptrNextNode = ptrStartNode;
-       dwCount = 0;
-       while (ptrNextNode->ptrNext)
-       {
-               *(ptrFileArray + dwCount) = &ptrNextNode->ptrNext->stFindInfo;
-               ptrNextNode = ptrNextNode->ptrNext;
-               dwCount++;
-       }
-
-       /* Sort Data if requested*/
-       if (lpFlags->stOrderBy.sCriteriaCount > 0)
-               QsortFiles(ptrFileArray, 0, dwCount-1, lpFlags);
-
-       /* Print Data */
-       pszFilePart[-1] = _T('\0'); /* truncate to directory name only */
-       DirPrintFiles(ptrFileArray, dwCount, szFullPath, lpFlags);
-       pszFilePart[-1] = _T('\\');
-
-       if (lpFlags->bRecursive)
-       {
-               PrintSummary(szFullPath,
-                       dwCountFiles,
-                       dwCountDirs,
-                       u64CountBytes,
-                       lpFlags,
-                       FALSE);
-       }
-
-       /* Free array */
-       cmd_free(ptrFileArray);
-       /* Free linked list */
-       while (ptrStartNode)
-       {
-               ptrNextNode = ptrStartNode->ptrNext;
-               cmd_free(ptrStartNode);
-               ptrStartNode = ptrNextNode;
-               dwCount --;
-       }
-
-       if (CheckCtrlBreak(BREAK_INPUT))
-               return 1;
-
-
-       /* Add statistics to recursive statistics*/
-       recurse_dir_cnt += dwCountDirs;
-       recurse_file_cnt += dwCountFiles;
-       recurse_bytes += u64CountBytes;
-
-       /* Do the recursive job if requested
-          the recursive is be done on ALL(indepent of their attribs)
-          directoried of the current one.*/
-       if (lpFlags->bRecursive)
-       {
-               /* The new search is involving any *.* file */
-               memcpy(szSubPath, szFullPath, (pszFilePart - szFullPath) * 
sizeof(TCHAR));
-               _tcscpy(&szSubPath[pszFilePart - szFullPath], _T("*.*"));
-
-               hRecSearch = FindFirstFile (szSubPath, &wfdFileInfo);
-               if (hRecSearch != INVALID_HANDLE_VALUE)
-               {
-                       do
-                       {
-                               /* We search for directories other than "." and 
".." */
-                               if ((_tcsicmp(wfdFileInfo.cFileName, _T(".")) 
!= 0) &&
-                                   (_tcsicmp(wfdFileInfo.cFileName, _T("..")) 
!= 0 ) &&
-                                   (wfdFileInfo.dwFileAttributes & 
FILE_ATTRIBUTE_DIRECTORY))
-                               {
-                                       /* Concat the path and the directory to 
do recursive */
-                                       memcpy(szSubPath, szFullPath, 
(pszFilePart - szFullPath) * sizeof(TCHAR));
-                                       _tcscpy(&szSubPath[pszFilePart - 
szFullPath], wfdFileInfo.cFileName);
-                                       _tcscat(szSubPath, _T("\\"));
-                                       _tcscat(szSubPath, pszFilePart);
-
-                                       /* We do the same for the folder */
-                                       if (DirList(szSubPath, lpFlags) != 0)
-                                       {
-                                               FindClose(hRecSearch);
-                                               return 1;
-                                       }
-                               }
-                       } while(FindNextFile(hRecSearch, &wfdFileInfo));
-               }
-               FindClose(hRecSearch);
-       }
-
-       return 0;
-}
-
-
+DirList(LPTSTR szPath,              /* [IN] The path that dir starts */
+        LPDIRSWITCHFLAGS lpFlags)   /* [IN] The flags of the listing */
+{
+    BOOL fPoint;                        /* If szPath is a file with extension 
fPoint will be True*/
+    HANDLE hSearch;                     /* The handle of the search */
+    HANDLE hRecSearch;                  /* The handle for searching recursivly 
*/
+    WIN32_FIND_DATA wfdFileInfo;        /* The info of file that found */
+    LPWIN32_FIND_DATA * ptrFileArray;   /* An array of pointers with all the 
files */
+    PDIRFINDLISTNODE ptrStartNode;      /* The pointer to the first node */
+    PDIRFINDLISTNODE ptrNextNode;       /* A pointer used for relatives 
refernces */
+    TCHAR szFullPath[MAX_PATH];         /* The full path that we are listing 
with trailing \ */
+    TCHAR szSubPath[MAX_PATH];
+    LPTSTR pszFilePart;
+    DWORD dwCount;                      /* A counter of files found in 
directory */
+    DWORD dwCountFiles;                 /* Counter for files */
+    DWORD dwCountDirs;                  /* Counter for directories */
+    ULONGLONG u64CountBytes;            /* Counter for bytes */
+    ULARGE_INTEGER u64Temp;             /* A temporary counter */
+
+    /* Initialize Variables */
+    ptrStartNode = NULL;
+    ptrNextNode = NULL;
+    dwCount = 0;
+    dwCountFiles = 0;
+    dwCountDirs = 0;
+    u64CountBytes = 0;
+    fPoint= FALSE;
+
+    /* Create szFullPath */
+    if (GetFullPathName(szPath, sizeof(szFullPath) / sizeof(TCHAR), 
szFullPath, &pszFilePart) == 0)
+    {
+        _tcscpy (szFullPath, szPath);
+        pszFilePart = NULL;
+    }
+
+    /* If no wildcard or file was specified and this is a directory, then
+       display all files in it */
+    if (pszFilePart == NULL || IsExistingDirectory(szFullPath))
+    {
+        pszFilePart = &szFullPath[_tcslen(szFullPath)];
+        if (pszFilePart[-1] != _T('\\'))
+            *pszFilePart++ = _T('\\');
+        _tcscpy(pszFilePart, _T("*"));
+    }
+
+    /* Prepare the linked list, first node is allocated */
+    ptrStartNode = cmd_alloc(sizeof(DIRFINDLISTNODE));
+    if (ptrStartNode == NULL)
+    {
+        WARN("DEBUG: Cannot allocate memory for ptrStartNode!\n");
+        return 1;      /* Error cannot allocate memory for 1st object */
+    }
+    ptrNextNode = ptrStartNode;
+
+    /*Checking ir szPath is a File with/wout extension*/
+    if (szPath[_tcslen(szPath) - 1] == _T('.'))
+        fPoint= TRUE;
+
+    /* Collect the results for the current folder */
+    hSearch = FindFirstFile(szFullPath, &wfdFileInfo);
+    if (hSearch != INVALID_HANDLE_VALUE)
+    {
+        do
+        {
+            /*If retrieved FileName has extension,and szPath doesnt have 
extension then JUMP the retrieved FileName*/
+            if(_tcschr(wfdFileInfo.cFileName,_T('.'))&&(fPoint==TRUE))
+            {
+                continue;
+            /* Here we filter all the specified attributes */
+            }
+            else if ((wfdFileInfo.dwFileAttributes & 
lpFlags->stAttribs.dwAttribMask )
+                    == (lpFlags->stAttribs.dwAttribMask & 
lpFlags->stAttribs.dwAttribVal ))
+            {
+                ptrNextNode->ptrNext = cmd_alloc(sizeof(DIRFINDLISTNODE));
+                if (ptrNextNode->ptrNext == NULL)
+                {
+                    WARN("DEBUG: Cannot allocate memory for 
ptrNextNode->ptrNext!\n");
+                    while (ptrStartNode)
+                    {
+                        ptrNextNode = ptrStartNode->ptrNext;
+                        cmd_free(ptrStartNode);
+                        ptrStartNode = ptrNextNode;
+                        dwCount--;
+                    }
+                    FindClose(hSearch);
+                    return 1;
+                }
+
+                /* If cmd_alloc fails we go to next file in hope it works,
+                   without braking the linked list! */
+                if (ptrNextNode->ptrNext)
+                {
+                    /* Copy the info of search at linked list */
+                    memcpy(&ptrNextNode->ptrNext->stFindInfo,
+                           &wfdFileInfo,
+                           sizeof(WIN32_FIND_DATA));
+
+                    /* If lower case is selected do it here */
+                    if (lpFlags->bLowerCase)
+                    {
+                        
_tcslwr(ptrNextNode->ptrNext->stFindInfo.cAlternateFileName);
+                        _tcslwr(ptrNextNode->ptrNext->stFindInfo.cFileName);
+                    }
+
+                    /* Continue at next node at linked list */
+                    ptrNextNode = ptrNextNode->ptrNext;
+                    dwCount ++;
+
+                    /* Grab statistics */
+                    if (wfdFileInfo.dwFileAttributes & 
FILE_ATTRIBUTE_DIRECTORY)
+                    {
+                        /* Directory */
+                        dwCountDirs++;
+                    }
+                    else
+                    {
+                        /* File */
+                        dwCountFiles++;
+                        u64Temp.HighPart = wfdFileInfo.nFileSizeHigh;
+                        u64Temp.LowPart = wfdFileInfo.nFileSizeLow;
+                        u64CountBytes += u64Temp.QuadPart;
+                    }
+                }
+            }
+        } while (FindNextFile(hSearch, &wfdFileInfo));
+        FindClose(hSearch);
+    }
+
+    /* Terminate list */
+    ptrNextNode->ptrNext = NULL;
+
+    /* Calculate and allocate space need for making an array of pointers */
+    ptrFileArray = cmd_alloc(sizeof(LPWIN32_FIND_DATA) * dwCount);
+    if (ptrFileArray == NULL)
+    {
+        WARN("DEBUG: Cannot allocate memory for ptrFileArray!\n");
+        while (ptrStartNode)
+        {
+            ptrNextNode = ptrStartNode->ptrNext;
+            cmd_free(ptrStartNode);
+            ptrStartNode = ptrNextNode;
+            dwCount --;
+        }
+        return 1;
+    }
+
+    /*
+     * Create an array of pointers from the linked list
+     * this will be used to sort and print data, rather than the list
+     */
+    ptrNextNode = ptrStartNode;
+    dwCount = 0;
+    while (ptrNextNode->ptrNext)
+    {
+        *(ptrFileArray + dwCount) = &ptrNextNode->ptrNext->stFindInfo;
+        ptrNextNode = ptrNextNode->ptrNext;
+        dwCount++;
+    }
+
+    /* Sort Data if requested*/
+    if (lpFlags->stOrderBy.sCriteriaCount > 0)
+        QsortFiles(ptrFileArray, 0, dwCount-1, lpFlags);
+
+    /* Print Data */
+    pszFilePart[-1] = _T('\0'); /* truncate to directory name only */
+    DirPrintFiles(ptrFileArray, dwCount, szFullPath, lpFlags);
+    pszFilePart[-1] = _T('\\');
+
+    if (lpFlags->bRecursive)
+    {
+        PrintSummary(szFullPath,
+                     dwCountFiles,
+                     dwCountDirs,
+                     u64CountBytes,
+                     lpFlags,
+                     FALSE);
+    }
+
+    /* Free array */
+    cmd_free(ptrFileArray);
+    /* Free linked list */
+    while (ptrStartNode)
+    {
+        ptrNextNode = ptrStartNode->ptrNext;
+        cmd_free(ptrStartNode);
+        ptrStartNode = ptrNextNode;
+        dwCount --;
+    }
+
+    if (CheckCtrlBreak(BREAK_INPUT))
+        return 1;
+
+
+    /* Add statistics to recursive statistics*/
+    recurse_dir_cnt += dwCountDirs;
+    recurse_file_cnt += dwCountFiles;
+    recurse_bytes += u64CountBytes;
+
+    /* Do the recursive job if requested
+       the recursive is be done on ALL(indepent of their attribs)
+       directoried of the current one.*/
+    if (lpFlags->bRecursive)
+    {
+        /* The new search is involving any *.* file */
+        memcpy(szSubPath, szFullPath, (pszFilePart - szFullPath) * 
sizeof(TCHAR));
+        _tcscpy(&szSubPath[pszFilePart - szFullPath], _T("*.*"));
+
+        hRecSearch = FindFirstFile (szSubPath, &wfdFileInfo);
+        if (hRecSearch != INVALID_HANDLE_VALUE)
+        {
+            do
+            {
+                /* We search for directories other than "." and ".." */
+                if ((_tcsicmp(wfdFileInfo.cFileName, _T(".")) != 0) &&
+                    (_tcsicmp(wfdFileInfo.cFileName, _T("..")) != 0 ) &&
+                    (wfdFileInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
+                {
+                    /* Concat the path and the directory to do recursive */
+                    memcpy(szSubPath, szFullPath, (pszFilePart - szFullPath) * 
sizeof(TCHAR));
+                    _tcscpy(&szSubPath[pszFilePart - szFullPath], 
wfdFileInfo.cFileName);
+                    _tcscat(szSubPath, _T("\\"));
+                    _tcscat(szSubPath, pszFilePart);
+
+                    /* We do the same for the folder */
+                    if (DirList(szSubPath, lpFlags) != 0)
+                    {
+                        FindClose(hRecSearch);
+                        return 1;
+                    }
+                }
+            } while(FindNextFile(hRecSearch, &wfdFileInfo));
+        }
+        FindClose(hRecSearch);
+    }
+
+    return 0;
+}
 
 /*
  * dir
@@ -1534,147 +1529,155 @@
 INT
 CommandDir(LPTSTR rest)
 {
-       TCHAR   dircmd[256];    /* A variable to store the DIRCMD enviroment 
variable */
-       TCHAR   path[MAX_PATH];
-       TCHAR   prev_volume[MAX_PATH];
-       LPTSTR* params = NULL;
-       LPTSTR  pszFilePart;
-       INT             entries = 0;
-       UINT    loop = 0;
-       DIRSWITCHFLAGS stFlags;
-       INT     ret = 1;
-       BOOL ChangedVolume;
-
-       /* Initialize Switch Flags < Default switches are setted here!> */
-       stFlags.b4Digit = TRUE;
-       stFlags.bBareFormat = FALSE;
-       stFlags.bLowerCase = FALSE;
-       stFlags.bNewLongList = TRUE;
-       stFlags.bPause = FALSE;
-       stFlags.bRecursive = FALSE;
-       stFlags.bShortName = FALSE;
-       stFlags.bTSeperator = TRUE;
-       stFlags.bUser = FALSE;
-       stFlags.bWideList = FALSE;
-       stFlags.bWideListColSort = FALSE;
-       stFlags.stTimeField.eTimeField = TF_MODIFIEDDATE;
-       stFlags.stAttribs.dwAttribMask = FILE_ATTRIBUTE_HIDDEN | 
FILE_ATTRIBUTE_SYSTEM;
-       stFlags.stAttribs.dwAttribVal = 0L;
-       stFlags.stOrderBy.sCriteriaCount = 0;
-
-       nErrorLevel = 0;
-
-       /* read the parameters from the DIRCMD environment variable */
-       if (GetEnvironmentVariable (_T("DIRCMD"), dircmd, 256))
-               if (!DirReadParam(dircmd, &params, &entries, &stFlags))
-               {
-                       nErrorLevel = 1;
-                       goto cleanup;
-               }
-
-       /* read the parameters */
-       if (!DirReadParam(rest, &params, &entries, &stFlags) || 
CheckCtrlBreak(BREAK_INPUT))
-       {
-               nErrorLevel = 1;
-               goto cleanup;
-       }
-
-       /* default to current directory */
-       if(entries == 0) {
-               if(!add_entry(&entries, &params, _T("*"))) {
-                       nErrorLevel = 1;
-                       goto cleanup;
-               }
-       }
-
-       prev_volume[0] = _T('\0');
-
-       /* Reset paging state */
-       if (stFlags.bPause)
-               ConOutPrintfPaging(TRUE, _T(""));
-
-       for(loop = 0; loop < (UINT)entries; loop++)
-       {
-               if (CheckCtrlBreak(BREAK_INPUT))
-               {
-                       nErrorLevel = 1;
-                       goto cleanup;
-               }
-
-               recurse_dir_cnt = 0L;
-               recurse_file_cnt = 0L;
-               recurse_bytes = 0;
-
-       /* <Debug :>
-          Uncomment this to show the final state of switch flags*/
-       {
-               int i;
-               TRACE("Attributes mask/value 
%x/%x\n",stFlags.stAttribs.dwAttribMask,stFlags.stAttribs.dwAttribVal  );
-               TRACE("(B) Bare format : %i\n", stFlags.bBareFormat );
-               TRACE("(C) Thousand : %i\n", stFlags.bTSeperator );
-               TRACE("(W) Wide list : %i\n", stFlags.bWideList );
-               TRACE("(D) Wide list sort by column : %i\n", 
stFlags.bWideListColSort );
-               TRACE("(L) Lowercase : %i\n", stFlags.bLowerCase );
-               TRACE("(N) New : %i\n", stFlags.bNewLongList );
-               TRACE("(O) Order : %i\n", stFlags.stOrderBy.sCriteriaCount );
-               for (i =0;i<stFlags.stOrderBy.sCriteriaCount;i++)
-                       TRACE(" Order Criteria [%i]: %i (Reversed: %i)\n",i, 
stFlags.stOrderBy.eCriteria[i], stFlags.stOrderBy.bCriteriaRev[i] );
-               TRACE("(P) Pause : %i\n", stFlags.bPause  );
-               TRACE("(Q) Owner : %i\n", stFlags.bUser );
-               TRACE("(S) Recursive : %i\n", stFlags.bRecursive );
-               TRACE("(T) Time field : %i\n", stFlags.stTimeField.eTimeField );
-               TRACE("(X) Short names : %i\n", stFlags.bShortName );
-               TRACE("Parameter : %s\n", debugstr_aw(params[loop]) );
-       }
-
-               /* Print the drive header if the volume changed */
-               ChangedVolume = TRUE;
-
-               if (!stFlags.bBareFormat &&
-                   GetVolumePathName(params[loop], path, sizeof(path) / 
sizeof(TCHAR)))
-               {
-                       if (!_tcscmp(path, prev_volume))
-                               ChangedVolume = FALSE;
-                       else
-                               _tcscpy(prev_volume, path);
-               }
-               else if (GetFullPathName(params[loop], sizeof(path) / 
sizeof(TCHAR), path, &pszFilePart) != 0)
-               {
-                       if (pszFilePart != NULL)
-                               *pszFilePart = _T('\0');
-               }
-               else
-                       _tcscpy(path, params[loop]);
-
-               if (ChangedVolume && !stFlags.bBareFormat) {
-                       if (!PrintDirectoryHeader (params[loop], &stFlags)) {
-                               nErrorLevel = 1;
-                               goto cleanup;
-                       }
-               }
-
-               /* do the actual dir */
-               if (DirList (params[loop], &stFlags))
-               {
-                       nErrorLevel = 1;
-                       goto cleanup;
-               }
-
-               /* print the footer */
-               PrintSummary(path,
-                       recurse_file_cnt,
-                       recurse_dir_cnt,
-                       recurse_bytes,
-                       &stFlags,
-                       TRUE);
-       }
-
-       ret = 0;
+    TCHAR   dircmd[256];    /* A variable to store the DIRCMD enviroment 
variable */
+    TCHAR   path[MAX_PATH];
+    TCHAR   prev_volume[MAX_PATH];
+    LPTSTR* params = NULL;
+    LPTSTR  pszFilePart;
+    INT     entries = 0;
+    UINT    loop = 0;
+    DIRSWITCHFLAGS stFlags;
+    INT ret = 1;
+    BOOL ChangedVolume;
+
+    /* Initialize Switch Flags < Default switches are setted here!> */
+    stFlags.b4Digit = TRUE;
+    stFlags.bBareFormat = FALSE;
+    stFlags.bLowerCase = FALSE;
+    stFlags.bNewLongList = TRUE;
+    stFlags.bPause = FALSE;
+    stFlags.bRecursive = FALSE;
+    stFlags.bShortName = FALSE;
+    stFlags.bTSeperator = TRUE;
+    stFlags.bUser = FALSE;
+    stFlags.bWideList = FALSE;
+    stFlags.bWideListColSort = FALSE;
+    stFlags.stTimeField.eTimeField = TF_MODIFIEDDATE;
+    stFlags.stAttribs.dwAttribMask = FILE_ATTRIBUTE_HIDDEN | 
FILE_ATTRIBUTE_SYSTEM;
+    stFlags.stAttribs.dwAttribVal = 0L;
+    stFlags.stOrderBy.sCriteriaCount = 0;
+
+    nErrorLevel = 0;
+
+    /* read the parameters from the DIRCMD environment variable */
+    if (GetEnvironmentVariable (_T("DIRCMD"), dircmd, 256))
+    {
+        if (!DirReadParam(dircmd, &params, &entries, &stFlags))
+        {
+            nErrorLevel = 1;
+            goto cleanup;
+        }
+    }
+
+    /* read the parameters */
+    if (!DirReadParam(rest, &params, &entries, &stFlags) || 
CheckCtrlBreak(BREAK_INPUT))
+    {
+        nErrorLevel = 1;
+        goto cleanup;
+    }
+
+    /* default to current directory */
+    if (entries == 0)
+    {
+        if (!add_entry(&entries, &params, _T("*")))
+        {
+            nErrorLevel = 1;
+            goto cleanup;
+        }
+    }
+
+    prev_volume[0] = _T('\0');
+
+    /* Reset paging state */
+    if (stFlags.bPause)
+        ConOutPrintfPaging(TRUE, _T(""));
+
+    for(loop = 0; loop < (UINT)entries; loop++)
+    {
+        if (CheckCtrlBreak(BREAK_INPUT))
+        {
+            nErrorLevel = 1;
+            goto cleanup;
+        }
+
+        recurse_dir_cnt = 0L;
+        recurse_file_cnt = 0L;
+        recurse_bytes = 0;
+
+        /* <Debug :>
+           Uncomment this to show the final state of switch flags*/
+        {
+            int i;
+            TRACE("Attributes mask/value 
%x/%x\n",stFlags.stAttribs.dwAttribMask,stFlags.stAttribs.dwAttribVal  );
+            TRACE("(B) Bare format : %i\n", stFlags.bBareFormat );
+            TRACE("(C) Thousand : %i\n", stFlags.bTSeperator );
+            TRACE("(W) Wide list : %i\n", stFlags.bWideList );
+            TRACE("(D) Wide list sort by column : %i\n", 
stFlags.bWideListColSort );
+            TRACE("(L) Lowercase : %i\n", stFlags.bLowerCase );
+            TRACE("(N) New : %i\n", stFlags.bNewLongList );
+            TRACE("(O) Order : %i\n", stFlags.stOrderBy.sCriteriaCount );
+            for (i =0;i<stFlags.stOrderBy.sCriteriaCount;i++)
+                TRACE(" Order Criteria [%i]: %i (Reversed: %i)\n",i, 
stFlags.stOrderBy.eCriteria[i], stFlags.stOrderBy.bCriteriaRev[i] );
+            TRACE("(P) Pause : %i\n", stFlags.bPause  );
+            TRACE("(Q) Owner : %i\n", stFlags.bUser );
+            TRACE("(S) Recursive : %i\n", stFlags.bRecursive );
+            TRACE("(T) Time field : %i\n", stFlags.stTimeField.eTimeField );
+            TRACE("(X) Short names : %i\n", stFlags.bShortName );
+            TRACE("Parameter : %s\n", debugstr_aw(params[loop]) );
+        }
+
+        /* Print the drive header if the volume changed */
+        ChangedVolume = TRUE;
+
+        if (!stFlags.bBareFormat &&
+            GetVolumePathName(params[loop], path, sizeof(path) / 
sizeof(TCHAR)))
+        {
+            if (!_tcscmp(path, prev_volume))
+                ChangedVolume = FALSE;
+            else
+                _tcscpy(prev_volume, path);
+        }
+        else if (GetFullPathName(params[loop], sizeof(path) / sizeof(TCHAR), 
path, &pszFilePart) != 0)
+        {
+            if (pszFilePart != NULL)
+                *pszFilePart = _T('\0');
+        }
+        else
+        {
+            _tcscpy(path, params[loop]);
+        }
+
+        if (ChangedVolume && !stFlags.bBareFormat)
+        {
+            if (!PrintDirectoryHeader (params[loop], &stFlags))
+            {
+                nErrorLevel = 1;
+                goto cleanup;
+            }
+        }
+
+        /* do the actual dir */
+        if (DirList (params[loop], &stFlags))
+        {
+            nErrorLevel = 1;
+            goto cleanup;
+        }
+
+        /* print the footer */
+        PrintSummary(path,
+                     recurse_file_cnt,
+                     recurse_dir_cnt,
+                     recurse_bytes,
+                     &stFlags,
+                     TRUE);
+    }
+
+    ret = 0;
 
 cleanup:
-       freep(params);
-
-       return ret;
+    freep(params);
+
+    return ret;
 }
 
 #endif


Reply via email to