diff options
author | Joursoir <chat@joursoir.net> | 2021-11-17 18:25:41 +0300 |
---|---|---|
committer | Joursoir <chat@joursoir.net> | 2021-11-17 18:25:41 +0300 |
commit | 7bbbcb62f632e12edc228b1ab675db88a331b20c (patch) | |
tree | f99309413dc3b00fe60c0d0677f083f39fdbe721 /Library/UefiShellUfmCommandLib/dir.c | |
parent | dc3f1f5224c86c3d99f6c401accadd2769552038 (diff) | |
download | ufm-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.c | 18 |
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; +} |