From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <jeff.westfahl@ni.com>
Received: from mx0b-00010702.pphosted.com (mx0a-00010702.pphosted.com
 [148.163.156.75])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by ml01.01.org (Postfix) with ESMTPS id 7214621A04E28
 for <edk2-devel@lists.01.org>; Fri, 12 May 2017 14:31:54 -0700 (PDT)
Received: from pps.filterd (m0098780.ppops.net [127.0.0.1])
 by mx0a-00010702.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id
 v4CLUhv7026947; Fri, 12 May 2017 16:31:53 -0500
Received: from ni.com (skprod3.natinst.com [130.164.80.24])
 by mx0a-00010702.pphosted.com with ESMTP id 2adn0w005e-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
 Fri, 12 May 2017 16:31:53 -0500
Received: from us-aus-exch2.ni.corp.natinst.com
 (us-aus-exch2.ni.corp.natinst.com [130.164.68.12])
 by us-aus-skprod3.natinst.com (8.16.0.17/8.16.0.17) with ESMTPS id
 v4CLVq6S008822
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);
 Fri, 12 May 2017 16:31:52 -0500
Received: from us-aus-exch7.ni.corp.natinst.com (130.164.68.17) by
 us-aus-exch2.ni.corp.natinst.com (130.164.68.12) with Microsoft SMTP Server
 (TLS) id 15.0.1156.6; Fri, 12 May 2017 16:31:52 -0500
Received: from us-aus-exhub1.ni.corp.natinst.com (130.164.68.41) by
 us-aus-exch7.ni.corp.natinst.com (130.164.68.17) with Microsoft SMTP Server
 (TLS) id 15.0.1156.6; Fri, 12 May 2017 16:31:52 -0500
Received: from jmw-lm181.ni.corp.natinst.com (130.164.49.7) by
 us-aus-exhub1.ni.corp.natinst.com (130.164.68.41) with Microsoft SMTP Server
 id 15.0.1156.6 via Frontend Transport; Fri, 12 May 2017 16:31:52 -0500
From: Jeff Westfahl <jeff.westfahl@ni.com>
To: <edk2-devel@lists.01.org>
CC: Jeff Westfahl <jeff.westfahl@ni.com>, Ruiyu Ni <ruiyu.ni@intel.com>,
 "Jaben Carsey" <jaben.carsey@intel.com>
Date: Fri, 12 May 2017 16:31:46 -0500
Message-ID: <1494624706-14200-1-git-send-email-jeff.westfahl@ni.com>
X-Mailer: git-send-email 2.7.4
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, ,
 definitions=2017-05-12_12:, , signatures=0
X-Proofpoint-Spam-Details: rule=outbound_policy_notspam policy=outbound_policy
 score=30
 priorityscore=1501 malwarescore=0 suspectscore=4 phishscore=0 bulkscore=0
 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0
 classifier=spam adjust=30 reason=mlx scancount=1 engine=8.0.1-1703280000
 definitions=main-1705120399
Subject: [PATCH] ShellPkg/Ls: Handle path specified from root
X-BeenThere: edk2-devel@lists.01.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: EDK II Development  <edk2-devel.lists.01.org>
List-Unsubscribe: <https://lists.01.org/mailman/options/edk2-devel>,
 <mailto:edk2-devel-request@lists.01.org?subject=unsubscribe>
List-Archive: <http://lists.01.org/pipermail/edk2-devel/>
List-Post: <mailto:edk2-devel@lists.01.org>
List-Help: <mailto:edk2-devel-request@lists.01.org?subject=help>
List-Subscribe: <https://lists.01.org/mailman/listinfo/edk2-devel>,
 <mailto:edk2-devel-request@lists.01.org?subject=subscribe>
X-List-Received-Date: Fri, 12 May 2017 21:31:54 -0000
Content-Type: text/plain

This fixes 'ls' when specifying a path from the root, like "ls \" from
within a subfolder. Currently, 'ls' will append the specified path to the
current working directory. The correct behavior is to start from the root
of the currently selected filesystem.

Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Jaben Carsey <jaben.carsey@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
---
 ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
index 52ae18f..b14bbcd 100644
--- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
+++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
@@ -679,7 +679,7 @@ ShellCommandRunLs (
             // We got a valid fully qualified path or we have a CWD
             //
             ASSERT((FullPath == NULL && Size == 0) || (FullPath != NULL));
-            if (StrStr(PathName, L":") == NULL) {
+            if (PathName [0] != L'\\' && StrStr(PathName, L":") == NULL) {
               StrnCatGrow(&FullPath, &Size, gEfiShellProtocol->GetCurDir(NULL), 0);
               if (FullPath == NULL) {
                 ShellCommandLineFreeVarList (Package);
-- 
2.7.4