35 lines
No EOL
1 KiB
HolyC
35 lines
No EOL
1 KiB
HolyC
I64 @shell_cmd_aplay(@shell* sh, I64 argc, U8** argv)
|
|
{
|
|
U8 buf[512];
|
|
if (argc < 2) {
|
|
StrPrint(&buf, "Error reading file %s\n", argv[1]);
|
|
Stdio.WriteLine(sh, "Usage: aplay [OPTION]... [FILE]...\n");
|
|
return 1;
|
|
}
|
|
I64 i;
|
|
I64 size;
|
|
Sound* snd;
|
|
U8* filename = NULL;
|
|
for (i = 1; i < argc; i++) {
|
|
filename = @shell_expand_relative_path(sh, argv[i]);
|
|
System.Log(Fs, "filename: %s", filename);
|
|
if (FileSystem.PathExists(filename)) {
|
|
snd = Audio.SoundFromFile(filename);
|
|
if (!snd) {
|
|
StrPrint(&buf, "%s: Error playing audio file\n", filename);
|
|
Stdio.WriteLine(sh, &buf);
|
|
Free(filename);
|
|
return 1;
|
|
}
|
|
Audio.PlaySound(snd);
|
|
Audio.FreeSound(snd);
|
|
Free(filename);
|
|
} else {
|
|
StrPrint(&buf, "%s: No such file or directory\n", filename);
|
|
Stdio.WriteLine(sh, &buf);
|
|
Free(filename);
|
|
return 1;
|
|
}
|
|
}
|
|
return 0;
|
|
} |