V9/jtools/src/sam/misc.c
#include "sam.h"
bcopy(s1, s2, d, dir)
register uchar *s1, *s2;
register uchar *d;
int dir;
{
register long n=s2-s1;
extern char *memcpy();
if(dir<0){
if(n>0){
register long m=(n+7)/8;
d+=n;
switch((int)(n&7)){
case 0: do{ *--d = *--s2;
case 7: *--d = *--s2;
case 6: *--d = *--s2;
case 5: *--d = *--s2;
case 4: *--d = *--s2;
case 3: *--d = *--s2;
case 2: *--d = *--s2;
case 1: *--d = *--s2;
}while(--m>0);
}
}
}else
memcpy((char *)d, (char *)s1, (int)(s2-s1));
}
Posn
getnum(){
register Posn n=0;
register c;
if((c=nextc())<'0' || '9'<c) /* no number defaults to 1 */
return 1;
while('0'<=(c=getc()) && c<='9')
n=n*10+c-'0';
ungetc();
return n;
}
skipbl(){
register c;
do c=getc(); while(c==' ' || c=='\t');
if(c>=0)
ungetc();
return c;
}