aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@debian.org>2014-07-01 08:29:20 +0100
committerSimon McVittie <smcv@debian.org>2014-09-01 08:54:37 +0100
commiteb87dd177ae5ad2838c9bb9acb5e1e40d9cc5f28 (patch)
treea98e402d22062f956b95611b7087c0832a93ebb8
parent4a11dc4d16463ed0afaf387d0c33d00ba639f52e (diff)
downloadikiwiki-eb87dd177ae5ad2838c9bb9acb5e1e40d9cc5f28.tar
ikiwiki-eb87dd177ae5ad2838c9bb9acb5e1e40d9cc5f28.tar.gz
Use Linux uuid facility instead of an external library if possible
-rw-r--r--IkiWiki/Plugin/edittemplate.pm20
-rw-r--r--doc/ikiwiki/directive/edittemplate.mdwn2
2 files changed, 14 insertions, 8 deletions
diff --git a/IkiWiki/Plugin/edittemplate.pm b/IkiWiki/Plugin/edittemplate.pm
index b408dfcac..571accf1f 100644
--- a/IkiWiki/Plugin/edittemplate.pm
+++ b/IkiWiki/Plugin/edittemplate.pm
@@ -140,13 +140,19 @@ sub filltemplate ($$) {
$template->param(name => $page);
if ($template->query(name => 'uuid')) {
- eval {
- require UUID::Tiny;
- UUID::Tiny->import(':std');
- my $uuid;
- $uuid = create_uuid_as_string(UUID_V4());
- $template->param(uuid => $uuid);
- };
+ my $uuid;
+ if (open(my $fh, "<", "/proc/sys/kernel/random/uuid")) {
+ $uuid = <$fh>;
+ chomp $uuid;
+ close $fh;
+ }
+ else {
+ eval {
+ require UUID::Tiny;
+ $uuid = UUID::Tiny::create_uuid_as_string(UUID::Tiny::UUID_V4());
+ };
+ }
+ $template->param(uuid => $uuid);
}
return $template->output;
diff --git a/doc/ikiwiki/directive/edittemplate.mdwn b/doc/ikiwiki/directive/edittemplate.mdwn
index 151fd203a..63df23914 100644
--- a/doc/ikiwiki/directive/edittemplate.mdwn
+++ b/doc/ikiwiki/directive/edittemplate.mdwn
@@ -35,6 +35,6 @@ Two variables might be set:
created.
* `<TMPL_VAR uuid>` is replaced with a version 4 (random) UUID.
- (Requires the `UUID::Tiny` Perl module.)
+ (Requires the `UUID::Tiny` Perl module if not running on Linux.)
[[!meta robots="noindex, follow"]]