예제 #1
0
int main (int argc, char ** argv)
{
  char* moduleName = 0;
  validateArgs(argc, argv, moduleName);
  assert(moduleName);
  doFile(moduleName);
  return 0;
}
예제 #2
0
int main(int argc, char **argv)
{
	const int on = 1;
	int sock, i;
	struct sockaddr_in addr[MAX_CONNECT], server;
	P_socket p_sock[MAX_CONNECT];
	validateArgs(argc, argv);

	if (interface)
	{
		server.sin_addr.s_addr = inet_addr(szAddress);
		if (server.sin_addr.s_addr == INADDR_NONE)
			usage();
	}
	else
		server.sin_addr.s_addr = htonl(INADDR_ANY);

	server.sin_family = AF_INET;
	server.sin_port = htons(port);

	if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
	{
		perror("Socket is not created");
		exit(1);
	}
	setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));

	for (i = 0; i < MAX_CONNECT; i++)
	{
		bzero(&addr[i], sizeof(addr[i]));
		p_sock[i].socket_fd = sock;
		p_sock[i].ptr_addr = &addr[i];
	}

	if (bind(sock, (struct sockaddr *)&server, sizeof(server)) < 0)
	{
		perror("Socket is not bound");
		exit(1);
	}

	for(i = 0;i < MAX_CONNECT;i++)
	{
		if (pthread_create(&t1[i], NULL, (void *)&pthread_handler, (void *)&p_sock[i]) != 0)
		{
			perror("Thread creating");
			exit(1);
		}
		pthread_join(t1[i], NULL);
	}

	close(sock);
	return 0;
}
예제 #3
0
int main(int argc, char **argv)
{
	
	int ret = validateArgs(argc, argv);
	if(ret == 0){
		printf("Argument's not supported\n");
		return 1;
	}
	else if(ret == 2){
		
		return 0;
	}
	else if(ret == 1){
   		transportLayer();
   	}
   	
   	return 0;
}
int main(int argc, char * argv[]){
 	ARGS args;
	pid_t *pid;
	int i = 0;
	char buf[4096];

	parseArgs(argc, argv, &args);
	validateArgs(&args);

	init(args.n_proc);

	pid = (pid_t*)malloc(sizeof(pid_t) * args.n_proc); 	
	createProc(args.n_proc, pid);

	//KILLOVANIE deti
	sigset_t set;
	int sig_num;

	sigemptyset(&set);
	sigaddset(&set, SIGINT);
	CHECK(sigprocmask(/*SIG_BLOCK*/ SIG_SETMASK, &set, NULL) == 0);
	CHECK(sigwait(&set, &sig_num) == 0);

	for(i = 0; i < args.n_proc; i++){
		CHECK(kill(pid[i], SIGUSR1) == 0 );
	}

	for(i = 0; i < args.n_proc; i++){
		CHECK(wait(NULL) != -1);	
	}

	read_((char*)&buf);
	fprintf(stderr, "%s\n", buf);
	
	teardown();
	free(pid);
	printf("detske procesy ukoncene\n");
	return EXIT_SUCCESS;
}
예제 #5
0
int main( int argc, char *argv[] )
{
    int err;

    /* Parse command line */

    if ( !validateArgs( argc, argv ) ) {
        err = GDIFF_ERR_ARGS;
    }
    else {
        err = openFiles();
    }

#ifdef XP_PC
    /* unbind windows executables if requested */
    if ( bUnbind )
        bUnbind = (err == GDIFF_OK) ? unbind( oldfile ) : FALSE;
#endif /* XP_PC */

    /* Calculate block checksums in old file */

    if ( err == GDIFF_OK ) {
        htbl = chunkOldFile( oldfile, blocksize );
        if ( htbl == NULL )
            err = GDIFF_ERR_MEM;
    }


    /* Do the diff */

    if ( err == GDIFF_OK ) {
        writeHeader( oldfile, newfile, outfile );
        diff( oldfile, newfile, outfile );
    }


    /* Cleanup */

    cleanup();


    /* Report status */

    if ( err != GDIFF_OK ) {
        switch (err) {
            case GDIFF_ERR_ARGS:
                fprintf( stderr, "Invalid arguments\n" );
                usage();
                break;

            case GDIFF_ERR_ACCESS:
                fprintf( stderr, "Error opening file\n" );
                break;

            case GDIFF_ERR_MEM:
                fprintf( stderr, "Insufficient memory\n" );
                break;

            default:
                fprintf( stderr, "Unknown error %d\n", err );
                break;
        }
    }
    else if ( bDebug ) {
        fprintf( stderr, "\nHashed %ld blocks into %ld slots (out of %ld)\n",
            blockshashed, slotsused, HTBLSIZE );
        fprintf( stderr, "Blocks found: %ld\n", blocksfound );
        fprintf( stderr, "Hashtable hits: %ld\n", hashhits );
        fprintf( stderr, "memcmps failed: %ld\n", cmpfailed );
        fprintf( stderr, "partial matches: %ld\n", partialmatch );
        fprintf( stderr, "\n%ld bytes in %ld ADDs (%ld in largest)\n", addtotal, addnum, addmax );
        fprintf( stderr, "%ld bytes in %ld COPYs (%ld in largest)\n", copytotal, copynum, copymax );
    }

    return (err);
}
예제 #6
0
int main(int argc, const char *argv[])
{
  // Init Default
  RegistrationConfig reg_cfg;
  reg_cfg.configFile3D_.clear();
  reg_cfg.initTrans_.clear();
  reg_cfg.initTrans_.append("0,0,0");
  ConvertOctomapConfig co_cfg;
  co_cfg.octomap_resolution = 0.1; // was always 0.1 for mav and atlas
  co_cfg.blur_sigma = 0.1; // default was .5
  co_cfg.blur_map = false;
  AppConfig app_cfg;

  const int ret = validateArgs(argc, argv, reg_cfg, co_cfg);

  if (ret == -1)
    return ret;

  if (reg_cfg.cloud_name_A.empty())
  {
    reg_cfg.cloud_name_A.append(reg_cfg.homedir);
    reg_cfg.cloud_name_A.append("/logs/multisenselog__2015-11-16/pointclouds/multisense_00.vtk");	
  }
  if (reg_cfg.cloud_name_B.empty())
  {    
  	reg_cfg.cloud_name_B.append(reg_cfg.homedir);
    reg_cfg.cloud_name_B.append("/logs/multisenselog__2015-11-16/pointclouds/multisense_01.vtk");	
  }

  //std::cout << "Blur sigma: " << co_cfg.blur_sigma << "\n";

  //Set up LCM channel for visualization
  boost::shared_ptr<lcm::LCM> lcm(new lcm::LCM);
  if(!lcm->good()){
    std::cerr <<"ERROR: lcm is not good()" <<std::endl;
  }

  App* app = new App(lcm, reg_cfg, co_cfg, app_cfg);     
  
  // Load point clouds from file
  DP ref = DP::load(reg_cfg.cloud_name_A);
  DP data = DP::load(reg_cfg.cloud_name_B);
  
  //=================================
  // TRANSFORM 3D CLOUD
  //=================================

  app->registr_->getICPTransform(data, ref);
  
  PM::TransformationParameters T = app->registr_->getTransform();
  cout << "3D Transformation:" << endl << T << endl;

  //=================================
  // CONVERT CLOUD TO OCTREE
  //================================= 

  app->do_convert_cloud_ = true; 

  if ( app->do_convert_cloud_ ) {

    ColorOcTree* treeA = doConversion(app, 0);
    //cout << "Pruned tree A size: " << treeA->size() <<" nodes." << endl;
    cout << "Changes A:" << endl;
    app->convert_->printChangesAndActual(*treeA);

    // Uncomment for visualization of matching results one by one:
    cout << "Press ENTER to continue..." << endl;
    cin.get();
    
    ColorOcTree* treeB = doConversion(app, 1);
    //cout << "Pruned tree B size: " << treeB->size() <<" nodes." << endl;
    cout << "Changes B:" << endl;
    app->convert_->printChangesByColor(*treeB);
  }
  
  return 0;
}
예제 #7
0
// This function evaluates the parse tree given by expr within the given environment.
Value* eval(Value *expr, Environment *env){
  Value* operator;
  Value* args;
  //printf("Here is expression:  ");
  //printValue(expr);
  //printf("\n");
  
  if (!expr){
    return NULL;
  }
  
  switch (expr->type) 
    {
    case symbolType:
      //printf("unknown identifier");
      args = envLookup(expr->symbolValue, env);
      if (args){
	//printf("going here\n");
	//printValue(expr);
	//printf("\nending here\n");
	return args;
      }
      else{
	printf("syntax error: unknown identifier");
	return NULL;
      }
      break;
    case cellType:
      if (expr->cons->car->type == nullType) {
	return expr->cons->car;
      }
      //printf("Here is expression:  ");
      //printValue(getFirst(expr));
      //printf("\n");
      
      if (getFirst(expr) != NULL && getFirst(expr)->type == openType) {
	operator = car(expr);

	if (!operator){
	  printf("syntax error, missing components here");
	  return NULL;
	}
	if (operator->type == cellType){
	  operator = eval(operator, env);
	}
	
	if (operator->type == symbolType){
	  args = getTail(getTail(expr));
	  //printf("checking args?: ");
	  //printValue(args);
	  //printf("\n"); //if (args  == NULL){
	  //return eval(operator,env); //	  }else 
	  if (strcmp(operator->symbolValue,"define")==0){
	    return evalDefine(args, env);
	  }else if (strcmp(operator->symbolValue,"lambda")==0){
	    /*eval lambda goes here*/
	    return evalLambda(args, env);
	  }else if (strcmp(operator->symbolValue,"if")== 0){
	    return evalIf(args, env);
	    /*eval if goes here*/
	  }else if (strcmp(operator->symbolValue,"quote")==0){
	    /*eval quote goes here*/
	    return evalQuote(args);
	  }else if (strcmp(operator->symbolValue,"let")==0){
	    /*eval let goes here*/
	    return evalLet(args, env);
	  }else{
	    //printf("validation result is shown: %d\n",validateArgs(args, env));
	    if (validateArgs(args, env)==-1){
	      printf("Syntax error! Invalid arguments for the procedure: ");
	      printValue(operator);
	      printf("\n");
	      return NULL;
	    } 
	    Value *evaledOperator = eval(operator, env);
	    Value *evaledArgs = evalEach(args, env);
	    if (!evaledOperator){
	      printf("Unknown procedure: ");
	      printValue(operator);
	      printf("\n");
	    }
	    //printValue(evaledArgs);
	    //printf("\n");
	    return apply(evaledOperator, evaledArgs);
	  }
	}else if (typeCheck(operator)==1){
	  printf("A literal ");
	  printValue(operator);
	  printf(" cannot be a procedure.\n");
	  return NULL; 
	}
      } else if (typeCheck(getFirst(expr))==1){
	//printValue(expr);
	//printf("\n");
	return evalEach(expr,env);
      }else if (getFirst(expr) && getFirst(expr)->type ==cellType && getFirst(getTail(expr)) && getFirst(getTail(expr))->type==closeType){
	return eval(getFirst(expr),env);
      }else if (getFirst(expr) && getFirst(expr)->type == symbolType){
	operator = getFirst(expr);
	Value *returnValue = envLookup(operator->symbolValue, env);
	
	if (returnValue){
	  return returnValue;
	}else{
	  if (strcmp(operator->symbolValue,"define")==0){
	    printf("define: bad syntax in ");
	    printValue(expr);
	    printf("\n");
	  }else if (strcmp(operator->symbolValue,"lambda")==0){
	    printf("lambda: bad syntax in ");
	    printValue(expr);
	    printf("\n");
	  }else if (strcmp(operator->symbolValue,"if")==0){
	    printf("if: bad syntax in ");
	    printValue(expr);
	    printf("\n");
	  }else if (strcmp(operator->symbolValue,"quote")==0){
	    printf("quote: bad syntax in ");
	     printValue(expr);
	     printf("\n");
	  }else if (strcmp(operator->symbolValue,"let")==0){
	     printf("let: bad syntax in ");
	     printValue(expr);
	     printf("\n");
	  }else{
	     
	    printf("Unknown identifier %s.\n",operator->symbolValue);
	   }
	  
	   return NULL;
	 }
       }
       
    case closeType:
      //printValue(expr);
      //printf("\n");
      return NULL;
      break;
    default:
      //printValue(expr);
      //printf("\n");
      if (getTail(expr)){
	assert(getFirst(getTail(expr))!=NULL);
	assert(getFirst(getTail(expr))->type==closeType);
	Value *toRemove = getTail(expr);
	free(toRemove->cons->car);
	free(toRemove->cons);
	free(toRemove);
	expr->cons->cdr = NULL;
	//assert(1==2);
      }
      return expr;      
    }
}
예제 #8
0
int main(int argc, char* argv[])
{

  int current_depth; 
  int input_max_depth; 
  char* targetDir; 
  char seedURL[MAX_URL_LENGTH]; 
  char* page; 
  char* nextURLVisit;

  //char** URLList; 

  //check for proper command line arguments
  validateArgs(argc, argv);
  
  dict = initDictionary();
  
  current_depth = 0; 

  strcpy(seedURL, argv[1]);
  targetDir = argv[2]; 
  input_max_depth = atoi(argv[argc - 1]); 

  addElement(dict, seedURL, current_depth +1); 

  updateListLinkToBeVisited(dict, url_list, current_depth); 
  
  //installDNODE(seedURL, hash1(seedURL) % MAX_HASH_SLOT, 1); 
 
  page = getPage(seedURL, current_depth, targetDir); 
  if(page == NULL)
    {
      printf("Whoops, Cannot Crawl seed URL: %s ABORT ABORT! \n", seedURL);
      exit(1);

    }
  //URLsList......
  extractURLs(page, seedURL); 

  free(page); 
 
  updateListLinkToBeVisited(dict, url_list, current_depth + 1);

  //all the URLs parsed that dont exist, put in dict with DNODE and have thsi point to URLNODE 
  visited(dict, seedURL);
  
  //pointer to interger without a cast?
  while((nextURLVisit = getAddressFromLinksToBeVisited(dict, &current_depth)) !=NULL)
    {
      if (current_depth > input_max_depth)
	{
	  printf("[crawler]: URL %s exceeds specified depth of %d \n", nextURLVisit, input_max_depth); 
	  visited(dict, nextURLVisit);
	  continue; 
	}
      page = getPage(nextURLVisit, current_depth, targetDir); 
      if (page == NULL)
	{
	  printf("[crawler:] cannot Crawl URL: %s \n Marking as visited and trying again\n", nextURLVisit);
	  visited(dict, nextURLVisit);
	  continue; 
	}

      //need to malloc url list if going to update it, no?
      extractURLs(page, nextURLVisit);
      free(page); 

      //load into hash
      //if in url and not in dict add dnode 
      
      updateListLinkToBeVisited(dict, url_list, current_depth + 1); // this is where insert and install is called 
      visited(dict, nextURLVisit);

    }
  //free(url_list);
  //freeList(URLList); 
  printf("[crawler]: we out, time for cleans \n"); 
  cleanDict(dict);
  free(dict); 
  //dict = NULL; 
  //cleanList(dict);
  //  cleanDNodes(dict);
  printCrawlStats(); 
  return 0; 
}