Example #1
0
static int
puttri(			/* convert a triangle */
	char	*v1,
	char	*v2,
	char	*v3
)
{
	VNDX	v1i, v2i, v3i;
	RREAL	*v1c, *v2c, *v3c;
	RREAL	*v1n, *v2n, *v3n;
	
	if (!cvtndx(v1i, v1) || !cvtndx(v2i, v2) || !cvtndx(v3i, v3)) {
		error(WARNING, "bad vertex reference");
		return(0);
	}
	if (v1i[1]>=0 && v2i[1]>=0 && v3i[1]>=0) {
		v1c = vtlist[v1i[1]];
		v2c = vtlist[v2i[1]];
		v3c = vtlist[v3i[1]];
	} else
		v1c = v2c = v3c = NULL;

	if (v1i[2]>=0 && v2i[2]>=0 && v3i[2]>=0) {
		v1n = vnlist[v1i[2]];
		v2n = vnlist[v2i[2]];
		v3n = vnlist[v3i[2]];
	} else
		v1n = v2n = v3n = NULL;
	
	return(cvtri(getmod(), vlist[v1i[0]], vlist[v2i[0]], vlist[v3i[0]],
			v1n, v2n, v3n, v1c, v2c, v3c) >= 0);
}
Example #2
0
/*
 * We need grfconfig() for backwards compatability with the ITE driver.
 */
void
grfconfig(void)
{
	struct hp_device hd;
	struct modtab *mptr;
	int noinit;
	int unit = 0;
	static int didconfig = 0;

	if (didconfig)
		return;

	for (noinit = 0; mptr = getmod(IODC_TP_FIO, -1, noinit); noinit = 1) {
		switch (mptr->mt_type.iodc_sv_model) {
		case SVMOD_FIO_SGC:
			/*
			 * XXX: The Medusa FDDI card looks just like a GRF.
			 */
			if (STI_ID_HI(STI_TYPE_BWGRF, mptr->m_hpa) == STI_ID_FDDI)
				continue;
			/* fall into... */
		case SVMOD_FIO_GGRF:
			if (unit == NGRF) {
				printf("grf%d: can't config (NGRF exceeded)\n",
				       unit);
				continue;
			}
			hd.hp_unit = unit++;
			hd.hp_addr = (char *)mptr;
			if (grfprobe(&hd))
				grfattach(&hd);
			break;

		default:
			break;
		}
	}

	/*
	 * XXX right now we are called for the first time from cnprobe
	 * before businit() has been called.  Hence getmod() will fail
	 * (return 0) and we should try again later.
	 */
	if (noinit)
		didconfig++;
}
Example #3
0
int
ftpparse_mlsx (struct ftpparse *fp, char *x, int ll, int is_mlst)
{
  int i;
  uint64 size;
  struct tai mtime;
  int flagtryretr=0;
  int flagtrycwd=0;
  char *id=0;
  int idlen=0;
  int mtimetype=FTPPARSE_MTIME_UNKNOWN;
  int sizetype=FTPPARSE_SIZE_UNKNOWN;
  int flagbrokenmlsx=0;
  SETUP();
  if (is_mlst)
    if (ll>1) {
      ll--;
      x++;
    }
  if (ll<2) /* empty facts, space, one-byte-filename */
    return 0;

  for (i=0; i<ll;i++) {
    int j=0,k=0;
    if (x[i]==' ')
      break; /* end of facts */
    while (i+j<ll && x[i+j]!=';' && x[i+j]!=' ' && x[i+j]!='=')
      j++;
    if (i+j==ll)
      return 0;
    if (x[i+j]==' ')
      return 0;
    if (x[i+j]==';')
      return 0;
    /* x[i+j] is now '=' */
    while (i+j+k<ll && x[i+j+k]!=';' && x[i+j+k]!=' ')
      k++;
    if (i+j+k==ll)
      return 0;
    /* x[i+j+k] is space or semicolon, so use of getlong is safe */
#define ISFACT(name) (j==sizeof(name)-1 && case_startb(x+i,j,name))
    if (ISFACT ("size")) {
      get_uint64 (x + i + j + 1, k - 1,&size);
      sizetype=FTPPARSE_SIZE_BINARY;
    } else if (ISFACT ("modify")) {
      getmod(&mtime,x + i + j + 1, k - 1);
      mtimetype = FTPPARSE_MTIME_LOCAL;
    } else if (ISFACT ("type")) {
      if (k==5 && case_startb (x + i + j + 1, 4, "file"))
	flagtryretr = 1;
      else if (case_startb (x + i + j + 1, 3, "dir")) /* "current" */
	flagtrycwd = 1;
      else if (case_startb (x + i + j + 1, 4, "pdir")) /* "parent" */
	flagtrycwd = 1;
      else if (case_startb (x + i + j + 1, 4, "cdir"))
	flagtrycwd = 1;
      else {
        flagtryretr = 1;
        flagtrycwd = 1;
      }
    } else if (ISFACT ("unique")) {
      id = x + i + j + 1;
      idlen = k - 1;
    }
    i+=j+k;
    if (x[i]==' ') {
      flagbrokenmlsx=1;
      break;
    }
  }
  if (ll==i) return 0;
  i++;
  if (ll==i) return 0;
  fp->name = x + i;
  fp->namelen = ll - i;
  fp->sizetype = sizetype;
  fp->size=size;
  fp->mtimetype = mtimetype;
  fp->mtime=mtime;
  fp->flagtrycwd=flagtrycwd;
  fp->flagtryretr=flagtryretr;
  if (id) {
    fp->idtype = FTPPARSE_ID_FULL;
    fp->id=id;
    fp->idlen=idlen;
  }
  fp->flagbrokenmlsx=flagbrokenmlsx;
  fp->format=FTPPARSE_FORMAT_MLSX;
  return 1;
}