add temporary file name generator
This commit is contained in:
parent
05fe41d8b4
commit
fc69a3f62f
1 changed files with 40 additions and 0 deletions
|
@ -37,6 +37,37 @@ fn sopen(
|
||||||
return file.?;
|
return file.?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn temporaryName(allocator: *std.mem.Allocator) ![]u8 {
|
||||||
|
const template_start = "/temp/temp_";
|
||||||
|
const template = "/tmp/temp_XXXXXX";
|
||||||
|
var nam = try allocator.alloc(u8, template.len);
|
||||||
|
std.mem.copy(u8, nam, template);
|
||||||
|
|
||||||
|
var r = std.rand.DefaultPrng.init(std.time.timestamp());
|
||||||
|
|
||||||
|
var fill = nam[template_start.len..nam.len];
|
||||||
|
|
||||||
|
var i: usize = 0;
|
||||||
|
while (i < 100) : (i += 1) {
|
||||||
|
|
||||||
|
// generate a random uppercase letter, that is, 65 + random number.
|
||||||
|
for (fill) |_, f_idx| {
|
||||||
|
var idx = @intCast(u8, r.random.uintLessThan(u5, 24));
|
||||||
|
var letter = u8(65) + idx;
|
||||||
|
fill[f_idx] = letter;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if we fail to access it, we assume it doesn't exist and return it.
|
||||||
|
std.fs.File.access(nam) catch |err| {
|
||||||
|
if (err == error.FileNotFound) {
|
||||||
|
return nam;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return error.TempGenFail;
|
||||||
|
}
|
||||||
|
|
||||||
pub const Image = struct {
|
pub const Image = struct {
|
||||||
allocator: *std.mem.Allocator,
|
allocator: *std.mem.Allocator,
|
||||||
sndfile: *c.SNDFILE,
|
sndfile: *c.SNDFILE,
|
||||||
|
@ -92,6 +123,10 @@ pub const Image = struct {
|
||||||
return n_read == 1;
|
return n_read == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Run a plugin over the image.
|
||||||
|
/// This setups a new lilv world/plugin among other things.
|
||||||
|
/// The internal SNDFILE pointer is modified to point to the output of the
|
||||||
|
/// plugin run.
|
||||||
pub fn runPlugin(
|
pub fn runPlugin(
|
||||||
self: *Image,
|
self: *Image,
|
||||||
plugin_uri: []const u8,
|
plugin_uri: []const u8,
|
||||||
|
@ -134,5 +169,10 @@ pub const Image = struct {
|
||||||
);
|
);
|
||||||
ports[idx].value = param.value;
|
ports[idx].value = param.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// now we need to generate a temporary file and put the output of
|
||||||
|
// running the plugin on that file
|
||||||
|
var tmpnam = try temporaryName(self.allocator);
|
||||||
|
std.debug.warn("temporary name: {}\n", tmpnam);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue