aboutsummaryrefslogtreecommitdiff
path: root/perl/lib
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2011-12-02 12:09:24 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2011-12-02 12:09:24 +0000
commit92d6a5ed73e043aebe5029c1ed75449873d327ac (patch)
tree45408ad62b18810c983dd1def7ee283b99c8209a /perl/lib
parent49f59dceca37636353cf2f5f60135d7705ea154e (diff)
* Add some more functions to the Perl bindings.
Diffstat (limited to 'perl/lib')
-rw-r--r--perl/lib/Nix/Store.pm3
-rw-r--r--perl/lib/Nix/Store.xs46
2 files changed, 48 insertions, 1 deletions
diff --git a/perl/lib/Nix/Store.pm b/perl/lib/Nix/Store.pm
index 126831105..4283e77a4 100644
--- a/perl/lib/Nix/Store.pm
+++ b/perl/lib/Nix/Store.pm
@@ -14,7 +14,8 @@ our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
our @EXPORT = qw(
isValidPath queryReferences queryPathInfo queryDeriver queryPathHash
topoSortPaths computeFSClosure followLinksToStorePath exportPaths
- hashPath
+ hashPath hashFile hashString
+ addToStore makeFixedOutputPath
);
our $VERSION = '0.15';
diff --git a/perl/lib/Nix/Store.xs b/perl/lib/Nix/Store.xs
index 5256d1372..f8a577fce 100644
--- a/perl/lib/Nix/Store.xs
+++ b/perl/lib/Nix/Store.xs
@@ -170,3 +170,49 @@ SV * hashPath(char * algo, int base32, char * path)
} catch (Error & e) {
croak(e.what());
}
+
+
+SV * hashFile(char * algo, int base32, char * path)
+ PPCODE:
+ try {
+ Hash h = hashFile(parseHashType(algo), path);
+ string s = base32 ? printHash32(h) : printHash(h);
+ XPUSHs(sv_2mortal(newSVpv(s.c_str(), 0)));
+ } catch (Error & e) {
+ croak(e.what());
+ }
+
+
+SV * hashString(char * algo, int base32, char * s)
+ PPCODE:
+ try {
+ Hash h = hashString(parseHashType(algo), s);
+ string s = base32 ? printHash32(h) : printHash(h);
+ XPUSHs(sv_2mortal(newSVpv(s.c_str(), 0)));
+ } catch (Error & e) {
+ croak(e.what());
+ }
+
+
+SV * addToStore(char * srcPath, int recursive, char * algo)
+ PPCODE:
+ try {
+ doInit();
+ Path path = store->addToStore(srcPath, recursive, parseHashType(algo));
+ XPUSHs(sv_2mortal(newSVpv(path.c_str(), 0)));
+ } catch (Error & e) {
+ croak(e.what());
+ }
+
+
+SV * makeFixedOutputPath(int recursive, char * algo, char * hash, char * name)
+ PPCODE:
+ try {
+ doInit();
+ HashType ht = parseHashType(algo);
+ Path path = makeFixedOutputPath(recursive, ht,
+ parseHash16or32(ht, hash), name);
+ XPUSHs(sv_2mortal(newSVpv(path.c_str(), 0)));
+ } catch (Error & e) {
+ croak(e.what());
+ }