File Coverage

xsubs/dependencies.xs
Criterion Covered Total %
statement 22 23 95.6
branch 28 36 77.7
condition n/a
subroutine n/a
pod n/a
total 50 59 84.7


line stmt bran cond sub pod time code
1             ################################################################################
2             #
3             # Copyright (c) 2002-2020 Marcus Holland-Moritz. All rights reserved.
4             # This program is free software; you can redistribute it and/or modify
5             # it under the same terms as Perl itself.
6             #
7             ################################################################################
8              
9              
10             ################################################################################
11             #
12             # METHOD: dependencies
13             #
14             # WRITTEN BY: Marcus Holland-Moritz ON: Sep 2002
15             # CHANGED BY: ON:
16             #
17             ################################################################################
18              
19             void
20             CBC::dependencies()
21             PREINIT:
22 935           CBC_METHOD(dependencies);
23             HashIterator hi;
24             const char *pKey;
25             FileInfo *pFI;
26              
27             PPCODE:
28             CT_DEBUG_METHOD;
29              
30 935 100         CHECK_PARSE_DATA;
31 932 100         CHECK_VOID_CONTEXT;
    100          
    100          
32              
33 929 100         if (GIMME_V == G_SCALAR)
    100          
34             {
35 926           HV *hv = newHV();
36              
37 2043 100         HT_foreach(pKey, pFI, hi, THIS->cpi.htFiles)
38             {
39 1117 50         if (pFI && pFI->valid)
    100          
40             {
41             SV *attr;
42 213           HV *hattr = newHV();
43              
44 213 50         HV_STORE_CONST(hattr, "size", newSVuv(pFI->size));
45 213 50         HV_STORE_CONST(hattr, "mtime", newSViv(pFI->modify_time));
46 213 50         HV_STORE_CONST(hattr, "ctime", newSViv(pFI->change_time));
47              
48 213           attr = newRV_noinc((SV *) hattr);
49              
50 213 50         if (hv_store(hv, pFI->name, strlen(pFI->name), attr, 0) == NULL)
51 0           SvREFCNT_dec(attr);
52             }
53             }
54              
55 926 50         XPUSHs(sv_2mortal(newRV_noinc((SV *) hv)));
56 926           XSRETURN(1);
57             }
58             else
59             {
60 3           int keylen, count = 0;
61              
62 3           HI_init(&hi, THIS->cpi.htFiles);
63 35 100         while (HI_next(&hi, &pKey, &keylen, (void **) &pFI))
64 32 50         if (pFI && pFI->valid)
    100          
65             {
66 31 50         XPUSHs(sv_2mortal(newSVpvn(CONST_CHAR(pKey), keylen)));
67 31           count++;
68             }
69              
70 932           XSRETURN(count);
71             }
72