Example #1
0
int main(int argc, char **argv){
	if(argc == 3)
	{
		char netbuffer[16];
		char maskbuffer[16];
		uint32_t number, numbermask;
		int result = readnumber(argv[1], &number);
		
		if(result != 1)
		{
			fprintf(stderr, "%s needs two arguments (unsigned int)\n", argv[0]);
			exit(-1);
		}
		result = readnumber(argv[2], &numbermask);
		if(result != 1)
		{
			fprintf(stderr, "%s needs two arguments (unsigned int)\n", argv[0]);
			exit(-1);
		}
		uint32_t mask = numbertonetmask(numbermask, maskbuffer);
		numbertosubnet(number, mask, netbuffer);

		printf("Network is %s\n, ", netbuffer);
		printf("Mask is %s\n", maskbuffer);
	} else {
		fprintf(stderr, "%s needs two arguments (unsigned int)\n", argv[0]);
		exit(-1);
	}
}
Example #2
0
static void
parse_number(void)
{
	unreadch();
	push_number(readnumber(&bmachine.readstack[bmachine.readsp],
	    bmachine.ibase));
}
Example #3
0
File: main.c Project: Rubusch/c
void select_insert(unsigned int* number_of_nodes)
{
  unsigned int select = 0;
  do{
    printf("\n\navailable insert options are:\n");
    printf("0\tcancel\n");
    printf("1\tpopulate\n");
    printf("2\tinsert an element\n");
    readdigit(&select, "select an operation:");

    if(1 == select){
      if(0 == *number_of_nodes){
	puts("the tree is empty, first create a tree root\nfailed.");
      }else if(1 <= *number_of_nodes){
	unsigned int number=0;
	do{
	  readnumber(&number, NUM_OF_NODES_DIGITS, "enter a number of nodes");
	}while((number < 0) || (number > MAX_NODES));
	populate_tree(number_of_nodes, number);
	printf("the tree was populated and now contains %d elements\ndone.\n", *number_of_nodes);
      }else{
	printf("%d elements\nfailed.\n", *number_of_nodes);
      }
      break;

    }else if(2 == select){
      if(0 == *number_of_nodes){
	puts("the tree is empty, first create a tree root");
      }else if(MAX_NODES == *number_of_nodes){
	printf("the tree is stuffed, it already contains %d nodes, (max. %d nodes possible)\n", *number_of_nodes, MAX_NODES);
      }else{
	puts("enter a data value for the new node");
	if(0 > add_element(number_of_nodes)){
	  puts("failed.");
	}else{
	  printf("%d elements\ndone.\n", *number_of_nodes);
	}    
      }
      break;
    }
  }while(0 != select);
}
Example #4
0
static int
readserie(int first, number **head)
{
	int      cur    = first;
	int      length = 0;
	number  *next;
	number **tail = head;

	while ((next = readnumber(cur - '0', &cur)) != (number *)0) {
		*tail =  next;
		tail  = &next->next;
		length++;

		while ((cur != EOF) && !isdigit(cur)) {
			if (cur == '\n') {
				curline++;
			} else if (cur == '.') {
				return length;
			}
			cur = fgetc(fpin);
		}
	}
	return length;
}
Example #5
0
File: shmget.c Project: Rubusch/c
int main(int argc, char** argv)
{
  // shm_key
  key_t shm_key;
  readlongnumber((unsigned long*) &shm_key, KEY_SIZE, "enter a key for the shared memory with up to 7 digits:");
  
  // size
  unsigned int size;
  readnumber(&size, KEY_SIZE, "enter a size of shared memory");

  // shm_flag
  int shm_flag;
  {
    unsigned int tmp_flag=0;
    do{
      tmp_flag = 0;

      puts("1\tIPC_CREAT");
      puts("2\tIPC_EXCL");
      puts("3\towner read");
      puts("4\towner write");
      puts("5\tgroup read");
      puts("6\tgroup write");
      puts("7\tother read");
      puts("8\tother write");

      readdigit(&tmp_flag, "set the flag:");

    }while( (1 > tmp_flag) || (8 < tmp_flag));
    
    switch (tmp_flag){

    case 1:
      puts("IPC_CREAT");
      shm_flag = IPC_CREAT;
      break;

    case 2:
      puts("IPC_EXCL");
      shm_flag = IPC_EXCL;
      break;

    case 3:
      fprintf(stderr, "owner read (%#8.8o)\n", 0400);
      shm_flag = 0400;
      break;

    case 4:
      fprintf(stderr, "owner write (%#8.8o)\n", 0200);
      shm_flag = 0200;
      break;

    case 5:
      fprintf(stderr, "group read (%#8.8o)\n", 040);
      shm_flag = 040;
      break;

    case 6:
      fprintf(stderr, "group write (%#8.8o)\n", 020);
      shm_flag = 020;
      break;

    case 7:
      fprintf(stderr, "other read (%#8.8o)\n", 04);
      shm_flag = 04;
      break;

    case 8:
      fprintf(stderr, "owner read (%#8.8o)\n", 02);
      shm_flag = 02;
      break;

    default:
      puts("try again");
      break;
    }
  }

  // shmget
  fprintf(stderr, "shmget(%ld, %d, %#o)\n", (long) shm_key, size, shm_flag);
  int shm_id;
  if(-1 == (shm_id = shmget(shm_key, size, shm_flag))){
    perror("shmget failed");
    exit(EXIT_FAILURE);
  }else{
    fprintf(stderr, "shmget returned %d\n", shm_id);
  }
  
  puts("READY.");
  exit(EXIT_SUCCESS);
}
Example #6
0
int main(int argc, char **argv)
{ 
  int ii=0, ncol=0, nrow=0, nl=0, nc=0, posi=0, posj=0, posk=0;
  //int nclust=atoi(argv[2]);
  MRI_IMAGE *im = NULL;
  double *dar = NULL;
  double **D = NULL;
  //int **mask = NULL;
  double** distmatrix = NULL;
  //from command.c

  int i = 1;
  char* filename = 0;
  char* jobname = 0;
  int l = 0;
  int k = 0;
  int kh = 3;
  int r = 1;
  int s = 0;
  int x = 2;
  int y = 1;
  int Rows, Columns;
  char distmetric = 'u';
  char arraymetric = '\0';
  char method = 'm';
  char cg = '\0';
  char ca = '\0';
  int ng = 0;
  int na = 0;
  while (i < argc)
  { const char* const argument = argv[i];

  
    i++;
    if (strlen(argument)<2)
    { printf("ERROR: missing argument\n");
      return 0;
    }
    if (argument[0]!='-')
    { printf("ERROR: unknown argument\n");
      return 0;
    }
    if(!strcmp(argument,"--version") || !strcmp(argument,"-v"))
    { display_version();
      return 0;
    }
    if(!strcmp(argument,"--help") || !strcmp(argument,"-h"))
    { display_help();
      return 0;
    }
    if(!strcmp(argument,"-cg"))
    { if (i==argc || strlen(argv[i])>1 || !strchr("am",argv[i][0]))
      { printf ("Error reading command line argument cg\n");
        return 0;
      }
      cg = argv[i][0];
      i++;
      continue;
    }
    if(!strcmp(argument,"-ca"))
    { if (i==argc || strlen(argv[i])>1 || !strchr("am",argv[i][0]))
      { printf ("Error reading command line argument ca\n");
        return 0;
      }
      ca = argv[i][0];
      i++;
      continue;
    }
    if(!strcmp(argument,"-ng"))
    { ng = 1;
      continue;
    }
    if(!strcmp(argument,"-na"))
    { na = 1;
      continue;
    }
    switch (argument[1])
    { case 'l': l=1; break;
      case 'u':
      { if (i==argc)
        { printf ("Error reading command line argument u: "
                  "no job name specified\n");
          return 0;
        }
        jobname = setjobname(argv[i],0);
        i++;
        break;
      }
      case 'f':
      { if (i==argc)
        { printf ("Error reading command line argument f: "
                  "no file name specified\n");
          return 0;
        }
        filename = argv[i];
        i++;
        break;
      }
      case 'g':
      { int g;
        if (i==argc)
        { printf ("Error reading command line argument g: parameter missing\n");
          return 0;
        }
        g = readnumber(argv[i]);
        if (g < 0 || g > 9)
        { printf ("Error reading command line argument g: "
                  "should be between 0 and 9 inclusive\n");
          return 0;
        }
        i++;
        distmetric = getmetric(g);
        break;
      }

      case 'k':
      { if (i==argc)
        { printf ("Error reading command line argument k: "
                  "parameter missing\n");
          return 0;
        }
        k = readnumber(argv[i]);
        if (k < 1)
        { printf ("Error reading command line argument k: "
                  "a positive integer is required\n");
          return 0;
        }
        i++;
        break;
      }

    case 'c':
      { if (i==argc)
        { printf ("Error reading command line argument h: parameter missing\n");
          return 0;
        }
        kh = readnumber(argv[i]);
        if (kh < 1)
        { printf ("Error reading command line argument h: a positive integer is required\n");
          return 0;
        }
        i++;
        break;
      }
      case 'r':
      { if (i==argc)
        { printf ("Error reading command line argument r: parameter missing\n");
          return 0;
        }
        r = readnumber(argv[i]);
        if (r < 1)
        { printf ("Error reading command line argument r: "
                  "a positive integer is required\n");
          return 0;
        }
        i++;
        break;
      }
    case 'm':
      { if (i==argc || strlen(argv[i])>1 || !strchr("msca",argv[i][0]))
	  { printf ("Error reading command line argument m: should be 'm', 's', 'c', or 'a'\n");
	    return 0;
	  }
        method = argv[i][0];
        i++;
        break;
      }


      default: printf ("Unknown option\n");
    }
   }

   if(jobname==0) jobname = setjobname(filename,1);

   /*  else
   { display_help();
    return 0;
   }
   */

    if (argc < 2) {
      display_help();
      return 0;
    }

   //printf("num of clusters %d \n",nclust);
   fprintf(stderr,"Patience, reading %s...\n ", filename);
   im = mri_read_double_1D (filename);
   /* ZIAD I get this warning
   Aclustering.c:408: warning: passing argument 1 of mri_read_double_1D 
                           discards qualifiers from pointer target type 
   Andrej: filename was declared as (const char *), 
          but the function expects (char *)              */
   if (!im) {
    fprintf(stderr,"Error: Failed to read matrix data from %s\n",
	    argv[2]);
    return(-1);
   }
   ncol = im->ny;
   nrow = im->nx;
   fprintf (stderr,"Have %d cols, %d rows\nNow...\n", ncol, nrow);

   /* now just get the array and kill the rest */
   dar = MRI_DOUBLE_PTR(im);

   /* make sure that pointer is set to NULL in im, or risk hell */
   mri_clear_data_pointer(im);
   if (im) mri_free(im); im = NULL; /* now kill im */


   /* for double loop*/
   D = (double **)calloc(sizeof(double*), nrow-1);
   
   for (ii=0;ii<(nrow-1);++ii) {
    D[ii] = (double *)calloc(sizeof(double), ncol-1);
   }

   for (nl=1; nl<nrow; ++nl) {
    for (nc=1; nc<ncol; ++nc) {
      D[nl-1][nc-1] = dar[nl+nc*nrow];
    }
    //fprintf(stdout,"\n");
  }
  
  //show_data(nrows, ncols, data, mask);
  //example_mean_median(nrows, ncols, data, mask);
  //distmatrix = example_distance_gene(nrows, ncols, data, mask);
  //if (distmatrix) example_hierarchical(nrows, ncols, data, mask, distmatrix);
  //example_distance_array(nrows, ncols, data, mask);
  if(k>0) example_kmeans(nrow-1, ncol-1, D, k, r, distmetric, jobname);
  
  else
    {
      distmatrix = example_distance_gene(nrow-1, ncol-1, D); // ZIAD: goes2 SIGKILL error
        if (distmatrix) 
	  example_hierarchical(nrow-1, ncol-1, D, jobname, kh, distmatrix);
        }
      

  
   free(dar); dar = NULL; /* done with input array */
   // To free D 
   for (ii=0;ii<(nrow-1);++ii) {

    if (D[ii]) free(D[ii]);
   }
   free(D);
   free(jobname);
   //free();

   fprintf (stderr,"\n");
   return 0;
   }
Example #7
0
int main(int argc, char** argv)
{
  // in case generate shared memory to pointer area_addr
  // address work area
  char *area_addr = NULL; 

  // work area
  register int area_id=0;

  // ptr to current state entry
  register struct state *pState=NULL;

  // SIGSEGV state hold area func ptr
  void (*savefunc) ();

  // action to be performed
  register int action=0;
  while(0 != (action = ask())){
    if(0 < nap){
      fprintf(stderr, "currently attached segments");
      fprintf(stderr, " shm_id address\n");
      fprintf(stderr, "------- ---------\n");
      pState = &attached_segments[nap+1];
      while(--pState != attached_segments){
	fprintf(stderr, "%6d", pState->shm_id);
	fprintf(stderr, "%#11x", (unsigned int) pState->shm_addr);
	fprintf(stderr, " Read%s\n", (pState->shm_flag & SHM_RDONLY) ? "-Only" : "/Write");	
      }
      fprintf(stderr, "\n");

    }else{
      fprintf(stderr, "no segments are currently attached\n");      
      switch(action){
      case 1:
	// 1 - verify that there is space for another attach
	if(nap == MAXnap){
	  fprintf(stderr, "this simple example will only allow %d attached segments\n", MAXnap);
	  break;
	}
	// get the arguments, make the call, report the result and update the current state array
	pState = &attached_segments[++nap];

	readnumber(&pState->shm_id, ID_DIGITS, "enter shm_id of segment to attach:");
	readstring(pState->shm_addr, ADDR_DIGITS, "enter shm_addr");
	fprintf(stderr, "meaningful shm_flag vlaues are:\n");
	fprintf(stderr, "1\tSHM_RDONLY (%d)\n", SHM_RDONLY);
	fprintf(stderr, "2\tSHM_RND (%d)\n", SHM_RND);
	unsigned int select=0;
	unsigned int askagain=0;
	do{
	  askagain=0;
	  readdigit(&select, "select a shm_flag");
	  switch(select){
	  case 1:
	    puts("SHM_RDONLY");
	    pState->shm_flag = SHM_RDONLY;
	    break;

	  case 2:
	    puts("SHM_RND");
	    pState->shm_flag = SHM_RND;
	    break;

	  default:
	    puts("wrong input - try again");
	    askagain = 1;
	    break;
	  }
	}while(askagain);
	fprintf(stderr, "now attach the segment - shmat(%d, %#x, %#o)\n"
		, pState->shm_id, (unsigned int) pState->shm_addr, pState->shm_flag);

	if(0 > (pState->shm_addr = shmat(pState->shm_id, pState->shm_addr, pState->shm_flag))){
	  perror("shmat() failed");
	  --nap; // decrement, because already incremented above, for new pointer element!
	}else{
	  fprintf(stderr, "shmat returned %#8.8x\n", (unsigned int) pState->shm_addr);
	}
	break;
	
      case 2:
	// 2 - shmdt requested
	/*
	  get the address, make the call, report the results and make the 
	  internal state match
	//*/
	readstring(area_addr, ADDR_DIGITS, "enter detach shm_addr");
     	if(-1 == (area_id = shmdt(area_addr))){
	  perror("shmdt failed");
	}else{
	  fprintf(stderr, "shmdt returned %d\n", area_id);
	  for(pState = attached_segments, area_id = nap; --area_id; ++pState){
	    if(0 != (pState->shm_addr = area_addr)) 
	      *pState = attached_segments[--nap];
	  }
	}	
	break;
	
      case 3:
	if(nap == 0) break;
	
	readstring(area_addr, ADDR_DIGITS, "enter address of an attached segment");
	if(good_addr(area_addr))
	  fprintf(stderr, "string @ %#x is '%s'\n",(unsigned int) area_addr, area_addr);
	break;

      case 4:
	if(nap == 0) break;
	readstring(area_addr, ADDR_DIGITS, "enter address of an attached segment");
	
	/*
	  set up SIGSEGV signal handler to trap attempts to write into a read-only 
	  attached segment
	//*/
	savefunc = signal(SIGSEGV, signalhandler);

	if(setjmp(segvbuf)){
	  fprintf(stderr, "SIGSEGV signal caught: write aborted\n");
	  fflush(stdin); 
	  signal(SIGSEGV, savefunc);
	}else{
	  if(good_addr(area_addr)){
	    fflush(stdin);
	    readstring(area_addr, AREA_DIGITS, "enter one line to e copied to the shared segment attached");
	    // TODO: check
	    if(NULL == strncpy(pState->shm_addr, (char*) -1, sizeof(char*))){
	      perror("strncpy to shared memory failed");
	      break;
	    }
	  }
	}
	break;
      }
    }
  }

  // not reached
  puts("READY.");
  exit(EXIT_SUCCESS);
}