aboutsummaryrefslogtreecommitdiffstats
path: root/Library/UefiShellUfmCommandLib/dir.c
diff options
context:
space:
mode:
authorJoursoir <chat@joursoir.net>2021-11-17 18:25:41 +0300
committerJoursoir <chat@joursoir.net>2021-11-17 18:25:41 +0300
commit7bbbcb62f632e12edc228b1ab675db88a331b20c (patch)
treef99309413dc3b00fe60c0d0677f083f39fdbe721 /Library/UefiShellUfmCommandLib/dir.c
parentdc3f1f5224c86c3d99f6c401accadd2769552038 (diff)
downloadufm-7bbbcb62f632e12edc228b1ab675db88a331b20c.tar.gz
ufm-7bbbcb62f632e12edc228b1ab675db88a331b20c.tar.bz2
ufm-7bbbcb62f632e12edc228b1ab675db88a331b20c.zip
dir: make dirl_getn()
Diffstat (limited to 'Library/UefiShellUfmCommandLib/dir.c')
-rw-r--r--Library/UefiShellUfmCommandLib/dir.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/Library/UefiShellUfmCommandLib/dir.c b/Library/UefiShellUfmCommandLib/dir.c
index 8e3a083..6049d18 100644
--- a/Library/UefiShellUfmCommandLib/dir.c
+++ b/Library/UefiShellUfmCommandLib/dir.c
@@ -88,3 +88,21 @@ struct dir_list *scandir(CONST CHAR16 *search_path, CONST CHAR16 *wildcard,
SHELL_FREE_NON_NULL(path);
return list;
}
+
+EFI_SHELL_FILE_INFO *dirl_getn(struct dir_list *dl, UINTN n)
+{
+ UINTN i = 1;
+ EFI_SHELL_FILE_INFO *list_head, *node;
+ list_head = dl->list_head;
+
+ if(n < 1 || n > dl->len)
+ return NULL;
+
+ node = (EFI_SHELL_FILE_INFO *)GetFirstNode(&list_head->Link);
+ while(!IsNull(&list_head->Link, &node->Link) && i != n) {
+ node = (EFI_SHELL_FILE_INFO *)GetNextNode(&list_head->Link, &node->Link);
+ i++;
+ }
+
+ return node;
+}