RE: microblaze getchar() not functioning properly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Can you please let me know whether the above change were correct..

I am assuming here that the code you pasted is correct.

If so, the read_macro function will only read and return one byte due to
the if statement being incorrectly bracketed.  If the function is called
with a buffer of more than 1 byte (ie. nbytes > 1) the buffer will only
contain 1 character rather than the number of characters given in
nbytes.  

I think the code should read:

int read_micro (int fd, char* buf, int nbytes)
{
  int i = 0;

  for (i = 0; i < nbytes; i++) {
    *(buf + i) = inbyte();
    if ((*(buf + i) == '\n' || *(buf + i) == '\r'))
    {
      i++;
      break;
    }
  }

  return i;
}

Regards,


Andrew




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux