コード例 #1
0
ファイル: progress.c プロジェクト: Radmind/radmind
    off_t
loadsetsize( FILE *tran )
{
    char	tline[ LINE_MAX ], line[ LINE_MAX ];
    char	**targv;
    int		tac, linenum = 0;
    off_t	size = 0;

    while ( fgets( tline, LINE_MAX, tran ) != NULL ) {
	linenum++;
	strcpy( line, tline );
	if (( tac = argcargv( tline, &targv )) == 0 ) {
	    continue;
	}

    	switch ( *targv[ 0 ] ) {
	case 'a':
	case 'f':
	    break;

	default:
	    continue;
	}

	linecheck( line, tac, linenum );
	size += strtoofft( targv[ 6 ], NULL, 10 );
    }

    rewind( tran );

    return( size );
}
コード例 #2
0
ファイル: progress.c プロジェクト: Radmind/radmind
    off_t
lcksum_loadsetsize( FILE *tran, char *prefix )
{
    char	tline[ LINE_MAX ], line[ LINE_MAX ];
    char	*d_path = NULL;
    char	**targv;
    int		tac, linenum = 0;
    off_t	size = 0;

    while ( fgets( tline, LINE_MAX, tran ) != NULL ) {
	linenum++;
	strcpy( line, tline );
	if (( tac = argcargv( tline, &targv )) <= 1 ) {
	    continue;
	}

	if ( prefix != NULL ) {
	    if (( d_path = decode( targv[ 1 ] )) == NULL ) {
		fprintf( stderr, "%d: path too long\n", linenum );
		exit( 2 );
	    }
	    if ( strncmp( d_path, prefix, strlen( prefix )) != 0 ) {
		continue;
	    }
	}

	switch ( *targv[ 0 ] ) {
	case 'a':
	case 'f':
	    linecheck( line, tac, linenum );
	    size += strtoofft( targv[ 6 ], NULL, 10 );

	default:
	    size += PROGRESSUNIT;
	    break;
	}
    }
	
    rewind( tran );
    return( size );
}
コード例 #3
0
ファイル: progress.c プロジェクト: Radmind/radmind
    off_t
applyloadsetsize( FILE *tran )
{
    char	tline[ LINE_MAX ], line[ LINE_MAX ];
    char	**targv;
    int		tac, linenum = 0;
    off_t	size = 0;

    while ( fgets( tline, LINE_MAX, tran ) != NULL ) {
	linenum++;
	strcpy( line, tline );
	/* skip empty lines and transcript marker lines */
	if (( tac = argcargv( tline, &targv )) <= 1 ) {
	    continue;
	}

	switch ( *targv[ 0 ] ) {
	case '+':
	    switch ( *targv[ 1 ] ) {
	    case 'a':
	    case 'f':
		linecheck( line, tac, linenum );
		size += strtoofft( targv[ 7 ], NULL, 10 );

	    default:
		break;
	    }

	default:
	    break;
	}

	size += PROGRESSUNIT;
    }

    rewind( tran );

    return( size );
}
コード例 #4
0
ファイル: fwrite.c プロジェクト: clerkma/texlive-mobile
static int range_check(struct index ind, int count, char *lbuff)
{
	int i,j,k,cc1,cc2,start,force=0;
	char tmpbuff[BUFFERLEN],errbuff[BUFFERLEN];

	for (i=count;i<ind.num+1;i++) {
		if (ind.p[i].enc[0]==range_close) {
			SPRINTF(errbuff,"Warning: Unmatched range closing operator \'%c\',",range_close);
			SAPPENDF(errbuff,"%s.",ind.idx[0]);
			warn_printf(efp, "%s\n", errbuff);
			ind.p[i].enc++;
		}
		if (ind.p[i].enc[0]==range_open) {
			start=i;
			ind.p[i].enc++;
			for (j=i;j<ind.num+1;j++) {
				if (strcmp(ind.p[start].enc,ind.p[j].enc)) {
					if (ind.p[j].enc[0]==range_close) {
						ind.p[j].enc++;
						ind.p[j].enc[0]='\0';
						force=1;
						break;
					}
					else if (j!=i && ind.p[j].enc[0]==range_open) {
						SPRINTF(errbuff,"Warning: Unmatched range opening operator \'%c\',",range_open);
						for (k=0;k<ind.words;k++) SAPPENDF(errbuff,"%s.",ind.idx[k]);
						warn_printf(efp, "%s\n", errbuff);
						ind.p[j].enc++;
					}
					if (strlen(ind.p[j].enc)>0) {
						SPRINTF(tmpbuff,"%s%s%s",encap_prefix,ind.p[j].enc,encap_infix);
						SAPPENDF(tmpbuff,"%s%s%s",ind.p[j].page,encap_suffix,delim_n);
						linecheck(lbuff,tmpbuff);
					}
				}
			}
			if (j==ind.num+1) {
					SPRINTF(errbuff,"Warning: Unmatched range opening operator \'%c\',",range_open);
					for (k=0;k<ind.words;k++) SAPPENDF(errbuff,"%s.",ind.idx[k]);
					warn_printf(efp, "%s\n", errbuff);
			}
			i=j-1;
		}
		else if (prange && i<ind.num) {
			if (chkcontinue(ind.p,i)
				&& (!strcmp(ind.p[i].enc,ind.p[i+1].enc)
				|| ind.p[i+1].enc[0]==range_open))
				continue;
			else {
				i++;
				break;
			}
		}
		else {
			i++;
			break;
		}
	}
	cc1=pnumconv(ind.p[i-1].page,ind.p[i-1].attr[0]);
	cc2=pnumconv(ind.p[count].page,ind.p[count].attr[0]);
	if (cc1>=cc2+2 || (cc1>=cc2+1 && strlen(suffix_2p)) || force) {
		return i-1;
	}
	else return count;
}
コード例 #5
0
ファイル: fwrite.c プロジェクト: clerkma/texlive-mobile
/*   write page block   */
static void printpage(struct index *ind, FILE *fp, int num, char *lbuff)
{
	int i,j,k,cc;
	char buff[BUFFERLEN],tmpbuff[BUFFERLEN],errbuff[BUFFERLEN];

	buff[0]=tmpbuff[0]='\0';

	crcheck(lbuff,fp);
	line_length=strlen(lbuff);

	for(j=0;j<ind[num].num;j++) {
		cc=range_check(ind[num],j,lbuff);
		if (cc>j) {
			if (pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0])==pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])) {
				j=cc-1;
				continue;
			}
/* range process */
			if (ind[num].p[j].enc[0]==range_open
				|| ind[num].p[j].enc[0]==range_close)
				ind[num].p[j].enc++;
			if (strlen(ind[num].p[j].enc)>0) {
				SPRINTF(buff,"%s%s%s",encap_prefix,ind[num].p[j].enc,encap_infix);
			}
			if (strlen(suffix_3p)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))==2) {
				SAPPENDF(buff,"%s%s",ind[num].p[j].page,suffix_3p);
			}
			else if (strlen(suffix_mp)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))>=2) {
				SAPPENDF(buff,"%s%s",ind[num].p[j].page,suffix_mp);
			}
			else if (strlen(suffix_2p)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))==1) {
				SAPPENDF(buff,"%s%s",ind[num].p[j].page,suffix_2p);
			}
			else {
				SAPPENDF(buff,"%s%s",ind[num].p[j].page,delim_r);
				SAPPENDF(buff,"%s",ind[num].p[cc].page);
			}
			SAPPENDF(tmpbuff,"%s",buff);
			buff[0]='\0';
			if (strlen(ind[num].p[j].enc)>0) {
				SAPPENDF(tmpbuff,"%s",encap_suffix);
			}
			linecheck(lbuff,tmpbuff);
			j=cc;
			if (j==ind[num].num) {
				goto PRINT;
			}
			else {
				SAPPENDF(tmpbuff,"%s",delim_n);
				linecheck(lbuff,tmpbuff);
			}
		}
		else if (strlen(ind[num].p[j].enc)>0) {
/* normal encap */
			if (ind[num].p[j].enc[0]==range_close) {
				SPRINTF(errbuff,"Warning: Unmatched range closing operator \'%c\',",range_close);
				for (i=0;i<ind[num].words;i++) SAPPENDF(errbuff,"%s.",ind[num].idx[i]);
				warn_printf(efp, "%s\n", errbuff);
				ind[num].p[j].enc++;
			}
			if (strlen(ind[num].p[j].enc)>0) {
				SAPPENDF(tmpbuff,"%s%s%s",encap_prefix,ind[num].p[j].enc,encap_infix);
				SAPPENDF(tmpbuff,"%s%s%s",ind[num].p[j].page,encap_suffix,delim_n);
				linecheck(lbuff,tmpbuff);
			}
			else {
				SAPPENDF(tmpbuff,"%s%s",ind[num].p[j].page,delim_n);
				linecheck(lbuff,tmpbuff);
			}
		}
		else {
/* no encap */
			SAPPENDF(tmpbuff,"%s%s",ind[num].p[j].page,delim_n);
			linecheck(lbuff,tmpbuff);
		}
	}

	if (ind[num].p[j].enc[0]==range_open) {
		SPRINTF(errbuff,"Warning: Unmatched range opening operator \'%c\',",range_open);
		for (k=0;k<ind[num].words;k++) SAPPENDF(errbuff,"%s.",ind[num].idx[k]);
		warn_printf(efp, "%s\n", errbuff);
		ind[num].p[j].enc++;
	}
	else if (ind[num].p[j].enc[0]==range_close) {
		SPRINTF(errbuff,"Warning: Unmatched range closing operator \'%c\',",range_close);
		for (k=0;k<ind[num].words;k++) SAPPENDF(errbuff,"%s.",ind[num].idx[k]);
		warn_printf(efp, "%s\n", errbuff);
		ind[num].p[j].enc++;
	}
	if (strlen(ind[num].p[j].enc)>0) {
		SAPPENDF(tmpbuff,"%s%s%s",encap_prefix,ind[num].p[j].enc,encap_infix);
		SAPPENDF(tmpbuff,"%s%s",ind[num].p[j].page,encap_suffix);
	}
	else {
		SAPPENDF(tmpbuff,"%s",ind[num].p[j].page);
	}
	linecheck(lbuff,tmpbuff);

PRINT:
	fputs(lbuff,fp);
	fputs(delim_t,fp);
	lbuff[0]='\0';
}
コード例 #6
0
ファイル: ex17.c プロジェクト: RitwikGopi/ex1
main(){
	int ch;
	while(ch!=EOF)
		ch=linecheck();
}
コード例 #7
0
ファイル: filecheck.c プロジェクト: RobinVan/JMTK
int filecheck(const char *check_fname, instream_t check_in,
              const char *in_fname, instream_t in,
              outstream_t out, outstream_t err) {

  char checkbuf[BUFSZ];
  char inbuf[BUFSZ];
  char check_not_buf[BUFSZ];

  unsigned check_linum = 0;
  unsigned in_linum = 0;

  /* For every line in 'check_in', attempt to find a matching line in 'in'. */
  while (check_in(checkbuf, BUFSZ) != -1) {
    const char *checkbuf2 = strip_whitespace(checkbuf);
    ++check_linum;
    checkbuf[BUFSZ-1] = '\0';

    if (!strncmp(checkbuf2, CHECK_NOT_STR, strlen(CHECK_NOT_STR))) {

      strcpy(check_not_buf, strip_whitespace(checkbuf2 + strlen(CHECK_NOT_STR)));
      continue;

    } else if (!strncmp(checkbuf2, CHECK_STR, strlen(CHECK_STR))) {
      
      const char *check = strip_whitespace(checkbuf2 + strlen(CHECK_STR));

      unsigned saved_in_linum = in_linum;
      int col = 0, not_col = 0;
      while (in(inbuf, BUFSZ) != -1) {
        ++in_linum;
        inbuf[BUFSZ-1] = '\0';

        col = linecheck(check, inbuf);
        if (col > 0)
          break;

        if (check_not_buf[0] != '\0') {
          not_col = linecheck(check_not_buf, inbuf);
          if (not_col > 0)
            break;
        }
      }

      if (col == 0 && not_col == 0) {
        diag(err,
             "%s:%d: expected string not found in input: %s",
             check_fname, check_linum, check);
        diag(err,
             "%s:%d:%d: scanning from here",
             in_fname, saved_in_linum, col);
        return 1;
      } else if (not_col > 0) {
        diag(err,
             "%s:%d: CHECK-NOT string found",
             check_fname, check_linum);
        diag(err,
             "%s:%d:%d: here",
             in_fname, saved_in_linum, not_col);
        return 1;
      }

      check_not_buf[0] = '\0';
    }
  }

  return 0;
}
コード例 #8
0
ファイル: drive.c プロジェクト: erniep/Potatoes
/* Functions */
void Robot_drive_task(void)
{
	Robot_PWM_init();											// Initialize motors
	int32_t pid_coeff[3];										// PID Coefficients
	int8_t e[3];
	int8_t e2[3];
	int32_t u;
	int32_t u2;
	pid_terms_calc(KP, KI, KD, F_SAMP, pid_coeff);
	uint8_t blk_cnt[4];											// Consecutive BLK read counters
	uint8_t num_iterations = 0;

	fw_motors(5, 60); //Test :)
	while(TRUE)
	{
		// Pend on semaphore - Light Sensor values updated
		Semaphore_pend(Sema_lightsense, BIOS_WAIT_FOREVER);
		switch(drivestate)
		{
		case DRIVESTATE_IDLE:
			// Do nothing :)
			break;
		case DRIVESTATE_FWD:
			linedetection(lightsnsr_val, blk_cnt, 0, 1, &num_iterations);
			linecheck(&u, &u2, &num_iterations, num_moves);
			error_calc(lightsnsr_val[0], e);
			error_calc(lightsnsr_val[1], e2);
			u = findu(e, u, pid_coeff);
			u2 = findu(e2, u2, pid_coeff);
			fwd_pid(u, u2, dutycycle);
			break;
		case DRIVESTATE_REV:
			linedetection(lightsnsr_val, blk_cnt, 1, 0, &num_iterations);
			linecheck(&u, &u2, &num_iterations, num_moves);
			error_calc(lightsnsr_val[0], e);
			error_calc(lightsnsr_val[1], e2);
			u = findu(e, u, pid_coeff);
			u2 = findu(e2, u2, pid_coeff);
			rev_pid(u, u2, dutycycle);
			break;
		case DRIVESTATE_STRAFELEFT:
			linedetection(lightsnsr_val, blk_cnt, 2, 3, &num_iterations);
			linecheck(&u, &u2, &num_iterations, num_moves);
			error_calc(lightsnsr_val[0], e);
			error_calc(lightsnsr_val[1], e2);
			u = findu(e, u, pid_coeff);
			u2 = findu(e2, u2, pid_coeff);
			tl_pid(u, u2, dutycycle);
			break;
		case DRIVESTATE_STRAFERIGHT:
			linedetection(lightsnsr_val, blk_cnt, 3, 2, &num_iterations);
			linecheck(&u, &u2, &num_iterations, num_moves);
			error_calc(lightsnsr_val[0], e);
			error_calc(lightsnsr_val[1], e2);
			u = findu(e, u, pid_coeff);
			u2 = findu(e2, u2, pid_coeff);
			tl_pid(u, u2, dutycycle);
			break;
		case DRIVESTATE_TURNCW:
			intersectiondetect(lightsnsr_val, blk_cnt, &num_iterations);
			linecheck(&u, &u2, &num_iterations, num_moves);
			break;
		case DRIVESTATE_TURNCCW:
			intersectiondetect(lightsnsr_val, blk_cnt, &num_iterations);
			linecheck(&u, &u2, &num_iterations, num_moves);
			break;
		}
	}
}