aboutsummaryrefslogblamecommitdiffstats
path: root/src/bin/turn2line.c
blob: 3dc190af1a2cfbe4bd760d2900c9ab70fae258bd (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16















                                                                         
#include <stdio.h>
int main(int argc,char *argv[]) {
 int in,x=0,dx,y=0,dy,h=0,dh=argc<2?-1:atoi(argv[1]);
 for(;(in=fgetc(stdin)) != -1;dh=-1,x+=dx,y+=dy) {
  if(dh == -1) {
   dh=-4;
   switch(in) { case'B':dh++;case'm':dh++;case'L':dh++;case'l':dh++;
     case'F':dh++;case'r':dh++;case'R':dh++;case's':dh++;default:break; }
   if(dh==-4) continue;
  }
  h=(h+8+dh)%8;
  dx=(signed char)"\x01\x01\x00\xff\xff\xff\x00\x01"[h%8];
  dy=(signed char)"\x00\x01\x01\x01\x00\xff\xff\xff"[h%8];
  printf("%d %d %d %d\n",x,y,x+dx,y+dy);
 }
}