File: zip_ext_count_symlinks.c

package info (click to toggle)
node-yarnpkg 4.1.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 24,752 kB
  • sloc: javascript: 38,953; ansic: 26,035; cpp: 7,247; sh: 2,829; makefile: 724; perl: 493
file content (28 lines) | stat: -rw-r--r-- 486 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <sys/stat.h>
#include <config.h>
#include <zipint.h>

int zip_ext_count_symlinks(zip_t *za)
{
  int count = 0;

  zip_uint64_t i;
  zip_uint8_t opsys;
  zip_uint32_t attributes;

  for (i = 0; i < za->nentry; i++)
  {
    int attrs = zip_file_get_external_attributes(za, i, 0, &opsys, &attributes);
    if (attrs == -1)
    {
      return -1;
    }

    if (opsys == ZIP_OPSYS_UNIX && ((attributes >> 16) & S_IFMT) == S_IFLNK)
    {
      count++;
    }
  }

  return count;
}