int main(int argc, char *argv[]) { int pkfd,skfd; unsigned char pk[crypto_box_PUBLICKEYBYTES]; unsigned char sk[crypto_box_SECRETKEYBYTES]; if(argc!=3) err_usage(); pkfd = open_excl(argv[1]); if(pkfd==-1) err_open(argv[1]); skfd = open_excl(argv[2]); if(skfd==-1) err_open(argv[2]); if(crypto_box_keypair(pk,sk)!=0) err_keypair(); if(write(pkfd,pk,sizeof(pk))!=sizeof(pk)) err_write(argv[1]); if(write(skfd,sk,sizeof(sk))!=sizeof(sk)) err_write(argv[2]); return 0; }
void CreateLCObjects() { int n; int obj; char c; for(obj=1; obj<=app_num_objects; obj++) { Print("+ Encoding Object #%-2d: ",obj); n=create_lc_object(obj); if(n!=0) { Print("Error! \n"); if(n==-1) err_seek(tempname1); if(n==-2) err_read(tempname1); if(n==-3) err_mem(); if(n==-4) err_write(tempname2); if(n==-5) err_lcobjhdr(tempname1); } c = app_obj_seekattr[obj] ? '*':' '; if(!quiet) { printf("[û] "); if(!verbose) printf("(%1.1f%%)\n", ((float)(obj_new_size+0.01)/(float)(obj_old_size+0.01))*100); else { printf("Old=%7d, New=%7d, (%1.1f%%) (%s)%c\n", obj_old_size,obj_new_size, ((float)(obj_new_size+0.01)/(float)(obj_old_size+0.01))*100, encodetype[app_enc_status], c); if(verbxtra) printf(" ** %s **, ** %s **, %7d - fixups\n", app_obj_iscode ? "CODE":"DATA", app_obj_is32bit ? "32bit":"16bit", app_obj_seekattr[obj]); } } } }
void CreateLCHeader() { int n; Print("+ Creating LC Header : "); n=create_lc_header(); if(n!=0) { Print("Error! \n"); if(n==-1) err_seek(tempname1); if(n==-2) err_read(tempname1); if(n==-3) err_write(tempname2); if(n==-4) err_linker(tempname1); if(n==-5) err_objects(tempname1); } else { if(!verbose) Print("Ok.\n"); else Print("Ok. (%d Objects)\n",app_num_objects); } }
/* ** close_output ** ** close output file, if it not stdout */ VOID close_output( VOID ) { if ( outfile ) { if ( (return_code == RC_OK) || (return_code == RC_WARN) || debug ) { status_msg( "Writting output" ); errno = 0; outfclose( outfile ); if ( errno ) err_write( outfile ); status_clear(); } else { status_msg( "No output written" ); status_lf(); outfclear( outfile ); } } }
int main(int argc, char *argv[]) { int skfd; unsigned char sk[crypto_secretbox_KEYBYTES]; if(argc!=2) err_usage(); skfd = open_excl(argv[1]); if(skfd==-1) err_open(argv[1]); randombytes(sk,crypto_secretbox_KEYBYTES); if(write(skfd,sk,sizeof(sk))!=sizeof(sk)) err_write(argv[1]); return 0; }
/* ** outch */ int outch( char ch ) { int this_ch = EOF; if ( !fatal_error ) { if ( suppress_output ) this_ch = ch; else this_ch = fputc( ch, outfile ); if ( this_ch == EOF ) err_write( outfile ); } return ( this_ch ); }
/* ** outstr */ int outstr( CONSTRPTR str ) { int ch_written = 0; if ( suppress_output ) ch_written = strlen( str ); else { ch_written = outfputs( str, outfile ); if ( ch_written == EOF ) err_write( outfile ); } return( ch_written ); }
void CreateLCFixups() { int n; Print("+ Encoding LC Fixups : "); n=create_lc_fixups(); if(n!=0) { Print("Error!\n"); if(n==-1) err_seek(tempname1); if(n==-2) err_read(tempname1); if(n==-3) err_mem(); if(n==-4) err_write(tempname2); } if(quiet!=TRUE) { printf("[û] "); if(!verbose) printf("(%1.1f%%)\n", ((float)(obj_new_size+0.01)/(float)(obj_old_size+0.01))*100); else printf("Old=%7d, New=%7d, (%1.1f%%) (%s)\n", obj_old_size,obj_new_size, ((float)(obj_new_size+0.01)/(float)(obj_old_size+0.01))*100, encodetype[app_enc_status]); } }
void arcit(char *inname) { struct _fizhdr fh; char *p; long pos; if ((infile=fopen(inname, "rb"))==NULL) err_open(inname); printf("archiving %s", inname); fflush(stdout); origsize=compsize=unpackable=0; crc=INIT_CRC; pos=ftell(outfile); if (fwrite((char *)&fh, sizeof(fh), 1, outfile) != 1) err_write("archive"); /* strip off the path specification */ if ((p=strrchr(inname, '\\'))==NULL) p=inname; else p++; if (fwrite(p, strlen(p), 1, outfile) != 1) err_write("archive"); encode(); if (unpackable) { printf("storing"); fflush(stdout); fh.method=0; fseek(outfile, pos+sizeof(fh)+strlen(p), SEEK_SET); fseek(infile, 0L, SEEK_SET); store(); } else { fh.method=1; } fh.id=FIZ_ID; fh.fnlen=strlen(p); fh.origsize=origsize; fh.compsize=compsize; fh.crc = crc; get_fdt(fileno(infile), &fh.date); fseek(outfile, pos, SEEK_SET); if (fwrite((char *)&fh, sizeof(fh), 1, outfile) != 1) err_write("archive"); fseek(outfile, 0L, SEEK_END); fclose(infile); printf("\n"); }
int main(int argc, char *argv[]) { int sockfd, newsockfd, portno; socklen_t clilen; char buffer[RCVLEN]; char sendbuff[SNDLEN]; struct sockaddr_in serv_addr, cli_addr; int n,i,j,newtargetsockfd; int yes = 1; // file descriptor bookkeeping int fdmax; fd_set master; fd_set read_fds; int connections[32][2] = {0}; // length of a fd_set if (argc < 2) { fprintf(stderr,"error, no port provided\n"); exit(1); } // set up listener socket sockfd = err_socket(AF_INET, SOCK_STREAM, 0); bzero((char *) &serv_addr, sizeof(serv_addr)); portno = atoi(argv[1]); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(portno); setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)); if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) err_exit("error on binding"); // listen only supports up to 5 backlog listen(sockfd,32); fdmax = sockfd; connections[0][0] = sockfd; connections[0][1] = sockfd; FD_SET(sockfd, &master); fprintf(stderr,"starting server \n"); int loop = 0; for (;;){ read_fds = master; if (select(fdmax+1, &read_fds, NULL, NULL, NULL) == -1) err_exit("error on select"); for(i = 0; i <= 32; i++){ if (connections[i][0] && connections[i][0] < 32) { if (!FD_ISSET(connections[i][0],&read_fds)) continue; fprintf(stderr,"checking connection...\n"); if (connections[i][0] == sockfd){ // handle new connections fprintf(stderr,"found new connection\n"); clilen = sizeof(cli_addr); newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); if (newsockfd < 0) err_exit("error on accept"); // add new fd to connections list for (j = 0; j < 32; j++){ if (!connections[j][0]){ connections[j][0] = newsockfd; connections[j][1] = newsockfd; break; } } FD_SET(newsockfd, &master); if (newsockfd > fdmax) fdmax = newsockfd; } else { // handle each client fprintf(stderr,"handling client %d\n",connections[i][0]); bzero(buffer,256); err_read(connections[i][0],buffer,RCVLEN-1); if (strcmp(buffer,"LIST\n") == 0){ // list all connected clients sprintf(buffer,"you are client %d\n",connections[i][0]); err_write(connections[i][0],buffer,strlen(buffer)); err_write(connections[i][0],"listing all connections...\n",27); for (j = 0; j < 32; j++){ if (connections[j][0] && connections[j][0] != sockfd){ sprintf(buffer,"client found: %d\n",connections[j][0]); err_write(connections[i][0],buffer, strlen(buffer)); } } n = err_write(connections[i][0],"done listing connections\n",25); } else if (sscanf(buffer,"CONNECT TO %d\n",&newtargetsockfd) > 0){ // set up forwarding fprintf(stderr,"connecting client %d to client %d\n",connections[i][0],newtargetsockfd); for(j = 0; j < 32; j++){ if (connections[j][0] == newtargetsockfd){ connections[i][1] = newtargetsockfd; sprintf(buffer,"connected to client %d\n",newtargetsockfd); err_write(connections[i][0],buffer,strlen(buffer)); j = 40; break; } } if (j != 40){ err_write(connections[i][0],"could not connect to client\n",28); } } else{ // read from one client, and write to another (input/output clients could be the same) printf("Here is the message: %s\n",buffer); err_write(connections[i][0],"message recieved\n",17); sprintf(sendbuff,"recieved message from client %d: %s\n",connections[i][0],buffer); err_write(connections[i][1],sendbuff,strlen(sendbuff)); } } } }// loop through file descriptors } close(newsockfd); close(sockfd); return 0; }