/* strtoul example */
#include <stdio.h>      /* printf, NULL */
#include <stdlib.h>     /* strtoul */
#include <errno.h>

signed int GetIdentifier(const char* idString)
{
  char *str_end;
  int id = -1;
  errno = 0;
  id = strtoul(idString, &str_end, 16);
  printf("Id (%s) - str_end %s - errno %d.\n", idString, str_end, errno);
  if ( *str_end != '\0' || (errno == ERANGE))
  {
    printf("Error while converting Id (%s) - str_end %s - errno %d.\n", idString, str_end, errno);
    return -1;
  }

  // Return error if converted Id is more than 29-bit
  if(id > 0x1FFFFFFF)
  {
    printf("Error: Id (%s) should fit on 29 bits (maximum value: 0x1FFFFFFF).\n", idString);
    return -1;
  }
  printf("sucess\n");
  return id;
}


int main ()
{
  GetIdentifier("inv");
  GetIdentifier("0x210000000");
  GetIdentifier("0x10000000");

  return 0;
}




