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]);
        if (FileSystem.PathExists(filename)) {
            snd = Audio.SoundFromFile(filename);
            if (!snd) {
                StrPrint(&buf, "%s: Error playing audio file\n", argv[i]);
                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", argv[i]);
            Stdio.WriteLine(sh, &buf);
            Free(filename);
            return 1;
        }
    }
    return 0;
}