rem: if (rc == 0)
add: if ((rc == 0)||(rc == -1))
context: int avr_initialize(int fd, AVRPART * p){  int rc;  int tries;  avr_powerup(fd);  ppi_setpin(fd, pgm->pinno[PIN_AVR_SCK], 0);  ppi_setpin(fd, pgm->pinno[PIN_AVR_RESET], 0);  ppi_pulsepin(fd, pgm->pinno[PIN_AVR_RESET]);  usleep(20000); /* 20 ms XXX should be a per-chip parameter */  /*   * Enable programming mode.  If we are programming an AT90S1200, we   * can only issue the command and hope it worked.  If we are using   * one of the other chips, the chip will echo 0x53 when issuing the   * third byte of the command.  In this case, try up to 32 times in   * order to possibly get back into sync with the chip if we are out   * of sync.   */  if (strcmp(p->desc, "AT90S1200")==0) {    avr_program_enable(fd, p);  }  else {    tries = 0;    do {      rc = avr_program_enable(fd, p);      if (rc == 0)        break;      ppi_pulsepin(fd, pgm->pinno[PIN_AVR_SCK]);      tries++;    } while (tries < 32);    /*     * can't sync with the device, maybe it's not attached?     */    if (tries == 32) {      fprintf(stderr, "%s: AVR device not responding\n", progname);      return -1;    }  }  return 0;}