int fs_puts(const char *src, fs_file fh) { while (*src) if (fs_putc(*src++, fh) < 0) return -1; return 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); }