Example #1
0
int cmd_put(fs_file fp, const union cmd *cmd)
{
    if (!fp || !cmd)
        return 0;

    assert(cmd->type > CMD_NONE && cmd->type < CMD_MAX);

    fs_putc(cmd->type, fp);

    switch (cmd->type)
    {
        PUT_CASE(CMD_END_OF_UPDATE);
        PUT_CASE(CMD_MAKE_BALL);
        PUT_CASE(CMD_MAKE_ITEM);
        PUT_CASE(CMD_PICK_ITEM);
        PUT_CASE(CMD_TILT_ANGLES);
        PUT_CASE(CMD_SOUND);
        PUT_CASE(CMD_TIMER);
        PUT_CASE(CMD_STATUS);
        PUT_CASE(CMD_COINS);
        PUT_CASE(CMD_JUMP_ENTER);
        PUT_CASE(CMD_JUMP_EXIT);
        PUT_CASE(CMD_BODY_PATH);
        PUT_CASE(CMD_BODY_TIME);
        PUT_CASE(CMD_GOAL_OPEN);
        PUT_CASE(CMD_SWCH_ENTER);
        PUT_CASE(CMD_SWCH_TOGGLE);
        PUT_CASE(CMD_SWCH_EXIT);
        PUT_CASE(CMD_UPDATES_PER_SECOND);
        PUT_CASE(CMD_BALL_RADIUS);
        PUT_CASE(CMD_CLEAR_ITEMS);
        PUT_CASE(CMD_CLEAR_BALLS);
        PUT_CASE(CMD_BALL_POSITION);
        PUT_CASE(CMD_BALL_BASIS);
        PUT_CASE(CMD_BALL_PEND_BASIS);
        PUT_CASE(CMD_VIEW_POSITION);
        PUT_CASE(CMD_VIEW_CENTER);
        PUT_CASE(CMD_VIEW_BASIS);
        PUT_CASE(CMD_CURRENT_BALL);
        PUT_CASE(CMD_PATH_FLAG);
        PUT_CASE(CMD_STEP_SIMULATION);
        PUT_CASE(CMD_MAP);
        PUT_CASE(CMD_TILT_AXES);
        PUT_CASE(CMD_MOVE_PATH);
        PUT_CASE(CMD_MOVE_TIME);

    case CMD_NONE:
    case CMD_MAX:
        break;
    }

    return !fs_eof(fp);
}
Example #2
0
char *fs_gets(char *dst, int count, fs_file fh)
{
    char *s = dst;
    int c;

    assert(dst);
    assert(count > 0);

    if (fs_eof(fh))
        return NULL;

    while (count > 1)
        if ((c = fs_getc(fh)) >= 0)
        {
            count--;

            *s = c;

            /* Keep a newline and break. */

            if (*s == '\n')
            {
                s++;
                break;
            }

            /* Ignore carriage returns. */

            if (*s == '\r')
            {
                count++;
                s--;
            }

            s++;
        }
        else if (s == dst)
            return NULL;
        else
            break;

    *s = '\0';

    return dst;
}
Example #3
0
static const char *getFSF (lua_State *L, void *ud, size_t *size) {
  LoadFSF *lf = (LoadFSF *)ud;
  (void)L;

  if (L == NULL && size == NULL) // Direct mode check
    return NULL;

  if (lf->extraline) {
    lf->extraline = 0;
    *size = 1;
    return "\n";
  }

  if (fs_eof(lf->f)) return NULL;
  *size = fs_read(lf->f, lf->buff, sizeof(lf->buff));

  return (*size > 0) ? lf->buff : NULL;
}
Example #4
0
/*
=================
eflac_decoder_eof
=================
*/
static FLAC__bool eflac_decoder_eof (GNUC_UNUSED const FLAC__StreamDecoder *decoder, void *client_data)
{
    snd_stream_t *s = client_data;

    return fs_eof(s->file);
}
Example #5
0
int cmd_get(fs_file fp, union cmd *cmd)
{
    int type;
    short size;

    if (!fp || !cmd)
        return 0;

    if ((type = fs_getc(fp)) >= 0)
    {
        get_short(fp, &size);

        /* Discard unrecognised commands. */

        if (type >= CMD_MAX)
        {
            fs_seek(fp, size, SEEK_CUR);
            type = CMD_NONE;
        }

        cmd->type = type;

        switch (cmd->type)
        {
            GET_CASE(CMD_END_OF_UPDATE);
            GET_CASE(CMD_MAKE_BALL);
            GET_CASE(CMD_MAKE_ITEM);
            GET_CASE(CMD_PICK_ITEM);
            GET_CASE(CMD_TILT_ANGLES);
            GET_CASE(CMD_SOUND);
            GET_CASE(CMD_TIMER);
            GET_CASE(CMD_STATUS);
            GET_CASE(CMD_COINS);
            GET_CASE(CMD_JUMP_ENTER);
            GET_CASE(CMD_JUMP_EXIT);
            GET_CASE(CMD_BODY_PATH);
            GET_CASE(CMD_BODY_TIME);
            GET_CASE(CMD_GOAL_OPEN);
            GET_CASE(CMD_SWCH_ENTER);
            GET_CASE(CMD_SWCH_TOGGLE);
            GET_CASE(CMD_SWCH_EXIT);
            GET_CASE(CMD_UPDATES_PER_SECOND);
            GET_CASE(CMD_BALL_RADIUS);
            GET_CASE(CMD_CLEAR_ITEMS);
            GET_CASE(CMD_CLEAR_BALLS);
            GET_CASE(CMD_BALL_POSITION);
            GET_CASE(CMD_BALL_BASIS);
            GET_CASE(CMD_BALL_PEND_BASIS);
            GET_CASE(CMD_VIEW_POSITION);
            GET_CASE(CMD_VIEW_CENTER);
            GET_CASE(CMD_VIEW_BASIS);
            GET_CASE(CMD_CURRENT_BALL);
            GET_CASE(CMD_PATH_FLAG);
            GET_CASE(CMD_STEP_SIMULATION);
            GET_CASE(CMD_MAP);
            GET_CASE(CMD_TILT_AXES);
            GET_CASE(CMD_MOVE_PATH);
            GET_CASE(CMD_MOVE_TIME);

        case CMD_NONE:
        case CMD_MAX:
            break;
        }

        return !fs_eof(fp);
    }
    return 0;
}