static int get_registry_objects() { struct wl_registry *registry = wl_display_get_registry(g_wl_display); wl_registry_add_listener(registry, ®istry_listener, NULL); wl_display_dispatch(g_wl_display); wl_display_roundtrip(g_wl_display); if (!g_wl_compositor) { p_log("Failed to get a proxy compositor (wl_compositor) object.\n"); return (-1); } if (!g_wl_shm) { p_log("Failed to get a proxy shared memory (wl_shm) object.\n"); return (-1); } if (!g_wl_shell) { p_log("Failed to get a proxy shell (wl_shell) object.\n"); } return (0); }
int main(int argc, char *argv[]) { int initialize_flag; char config_value[255]; int i; int total_lanes; char acqcfgpath[127]; char command_buffer[255]; char base_dir[255]; sprintf(base_dir, "%s/polonator/G.007/acquisition", getenv("HOME")); sprintf(log_dir, "%s/logs", base_dir); sprintf(command_buffer, "mkdir -p %s", log_dir); system(command_buffer); if(argc == 3){ initialize_flag = atoi(argv[2]); } else{ initialize_flag = 0; } fprintf(stdout, "the initialize flag is %d\n", initialize_flag); /* Open config file */ strcpy(acqcfgpath, getenv("POLONATOR_PATH")); strcat(acqcfgpath, "/config_files/polonator-acq.cfg"); config_open(acqcfgpath); if(!config_getvalue("stagealign_wells_per_fc", config_value)){ p_log("ERROR:\tPolonator-stagealign: config_getval(key stagealign_wells_per_fc) returned no value"); exit(0); } total_lanes = atoi(config_value); if(!config_getvalue("stagealign_outputdir", config_value)){ p_log("ERROR:\tPolonator-stagealign: config_getval(key stagealign_outputdir) returned no value"); exit(0); } strcpy(output_directory, base_dir); strcat(output_directory, "/"); strcat(output_directory, config_value); config_close(); fprintf(stdout, "=%s=\n", output_directory); /* Make sure stagealign output directory exists */ mkdir(output_directory, S_IRWXU); sprintf(log_string, "Create new directory %s :", output_directory); p_log_simple(log_string); for(i = 0; i < total_lanes; i++) { stagealign(atoi(argv[1]), i, initialize_flag); } return 0; }
/* first-run initialization of hardware and libraries */ int rhw_init(HardwareData_type *HardwareDescriptor) { int retval; DeviceData_type DeviceData; char message[200]; p_log("STATUS:\thardware_D4000: initializing"); /* initialize libD4000 and make sure a device is connected */ retval = libD4000_init(); if(!libD4000_IsDeviceAttached(DEVNUM)) { p_log("ERROR:\thardware_D4000: DMD not found"); return -1; } /* connect to the device and upload firmware if needed */ if(libD4000_ConnectDevice(DEVNUM, D4000_USB_BIN) < 0) { sprintf(message, "ERROR:\thardware_D4000: Could not connect to device. Check firmware file %s", D4000_USB_BIN); p_log(message); return -2; } /* get device data (DMD size, etc.) */ DeviceData = libD4000_GetDeviceData(DEVNUM); HardwareDescriptor->Width = DeviceData.DMDWidth; HardwareDescriptor->Height = DeviceData.DMDHeight; HardwareDescriptor->BitsPerPixel = DeviceData.DMDSizeinBytes*8/(DeviceData.DMDWidth*DeviceData.DMDHeight); /* setup FrameBuf_off -- holds image for disabled state */ if(FrameBuf_off != NULL) { free(FrameBuf_off); printf("weird!!!!!"); } FrameBuf_off_size = DeviceData.DMDSizeinBytes; if((FrameBuf_off = malloc(FrameBuf_off_size)) == NULL) { p_log("ERROR:\thardware_D4000: Error allocating frame buffer"); return -3; } memset(FrameBuf_off, RHW_DISABLE_FILL, FrameBuf_off_size); /* prepare frame buffer */ libD4000_Clear(DMD_ALLBLOCKS, 1, DEVNUM); //libD4000_GetRESETCOMPLETE(5000, DEVNUM); //libD4000_FloatMirrors(DEVNUM); if (libD4000_GetDMDTYPE(DEVNUM) == 0) { printf("awesome!!!!!"); } return retval; }
/** * Initialize the DNS resolver for use. If this function fails the BNC will not be able to function * properly. */ int p_dns_init() { int ret; if ((ret = ares_init(&resolver)) != ARES_SUCCESS) { p_log(LOG_ERROR, -1, "Failed to initialize ares resolver: %s", ares_strerror(ret)); return 0; } p_log(LOG_INFO, -1, "Asynchronous resolver initialized: c-ares %s", ares_version(NULL)); return 1; }
int connectedlink(int nlink) { char buf[400]; struct socketnodes *lkm; int tmpsock; pcontext; tmpsock=datalink(nlink)->outsock; ssnprintf(tmpsock,lngtxt(512),datalink(nlink)->name,socketnode->sock->sport); if (*datalink(nlink)->pass==0) { strmncpy(datalink(nlink)->pass,randstring(15),sizeof(datalink(nlink)->pass)); writelink(nlink); } ssnprintf(tmpsock,lngtxt(513),datalink(nlink)->pass); ssnprintf(tmpsock,lngtxt(514),me,me); #ifdef PARTYCHANNEL ssnprintf(tmpsock,lngtxt(515)); #endif #ifdef INTNET joinintnettolink(nlink); #endif ssnprintf(tmpsock,lngtxt(516)); p_log(LOG_INFO,-1,lngtxt(517), nlink,datalink(nlink)->host,datalink(nlink)->port); return 0x0; }
int cleartranslates() { struct translatet *lkm,*pre; lkm=translate; pre=NULL; pcontext; while(lkm!=NULL) { lkm->delayed-=delayinc; if(lkm->delayed<=0) { p_log(LOG_WARNING,-1,lngtxt(876),lkm->uid,lkm->dest,lkm->lang); erasetranslate(lkm->uid); pcontext; if(pre==NULL) lkm=translate; else lkm=pre->next; } else { pre=lkm; lkm=lkm->next; } } return 0x0; }
void initSSL() { SSL_load_error_strings(); OpenSSL_add_ssl_algorithms(); srvctx=SSL_CTX_new(SSLv23_server_method()); /* setting up the server context */ if(srvctx==NULL) { p_log(LOG_ERROR,-1,lngtxt(970)); exit(0x1); } if (SSL_CTX_use_certificate_file(srvctx, SSLCERT, SSL_FILETYPE_PEM) <= 0) { p_log(LOG_ERROR,-1,lngtxt(971), SSLCERT); exit(0x1); } if (SSL_CTX_use_PrivateKey_file(srvctx, SSLKEY, SSL_FILETYPE_PEM) <= 0) { p_log(LOG_ERROR,-1,lngtxt(972), SSLKEY); exit(0x1); } if (!SSL_CTX_check_private_key(srvctx)) { p_log(LOG_ERROR,-1,lngtxt(973)); exit(0x1); } /* create client context */ clnctx=SSL_CTX_new(SSLv23_client_method()); if(clnctx==NULL) { p_log(LOG_ERROR,-1,lngtxt(974)); exit(0x1); } if (SSL_CTX_use_certificate_file(clnctx, SSLCERT, SSL_FILETYPE_PEM) <= 0) { p_log(LOG_ERROR,-1,lngtxt(975), SSLCERT); exit(3); } if (SSL_CTX_use_PrivateKey_file(clnctx, SSLKEY, SSL_FILETYPE_PEM) <= 0) { p_log(LOG_ERROR,-1,lngtxt(976), SSLKEY); exit(4); } if (!SSL_CTX_check_private_key(clnctx)) { p_log(LOG_ERROR,-1,lngtxt(977)); exit(5); } p_log(LOG_INFO,-1,lngtxt(978)); return; }
int linkrelayconnected(int nlink) { int tmpsock; pcontext; tmpsock=datalink(nlink)->outsock; ssnprintf(tmpsock,lngtxt(507),datalink(nlink)->iam,datalink(nlink)->iam,datalink(nlink)->iam); ssnprintf(tmpsock,lngtxt(508),datalink(nlink)->iam); p_log(LOG_INFO,-1,lngtxt(509),datalink(nlink)->iam); return 0x0; }
int connectlink(int nlink) { int tmpsock; int proto=AF_INET; int issl=SSL_OFF; char vsl[10]; char *ho; pcontext; vsl[0]=0; if (datalink(nlink)->type!=LI_LINK) return 0x0; if (datalink(nlink)->outstate==STD_CONN) return 0x0; if (datalink(nlink)->delayed>0) { datalink(nlink)->delayed-=1; return 0x0; } #ifdef HAVE_SSL if(strstr(datalink(nlink)->host,"S=")==datalink(nlink)->host) { ho=datalink(nlink)->host+2; issl=SSL_ON; strcpy(vsl,"SSL-"); } else #endif ho=datalink(nlink)->host; datalink(nlink)->delayed=0; p_log(LOG_INFO,-1,lngtxt(561),vsl,nlink,ho,datalink(nlink)->port); /* we got a server and a port */ tmpsock=createsocket(0,ST_CONNECT,nlink,SGR_NONE,NULL,connectedlink,errorlink,checklinkdata,killedlink,linkremap,proto,issl); if (tmpsock!=0) { datalink(nlink)->outstate=STD_CONN; datalink(nlink)->outsock=tmpsock; } tmpsock=connectto(tmpsock,ho,datalink(nlink)->port,NULL); if(tmpsock!=0) return 0x1; p_log(LOG_ERROR,-1,lngtxt(562),nlink,datalink(nlink)->host,datalink(nlink)->port); datalink(nlink)->outstate=STD_NOCON; return -1; }
int errorlink(int nlink,int errn) { pcontext; p_log(LOG_ERROR,-1,lngtxt(518), nlink,datalink(nlink)->host,datalink(nlink)->port); currentsocket->sock->destructor=NULL; killsocket(datalink(nlink)->outsock); datalink(nlink)->outstate=STD_NOCON; return -1; }
void p_resolveArguments(int argc, char** argv, struct p_arguments* pa) { if (( argc < 2 ) || (strcmp(argv[1],"-h") == 0)) { p_help(); } if (argc < 3) { p_log(PLL_ERROR,"Not enough arguments."); p_exit(PR_ECLARGS); } if (strcmp(argv[1],"--powxa") == 0) { pa->computeFunction = re_powxa_va; if (argc < 4) { p_log(PLL_ERROR,"Not enough arguments. You need to specify the exponent. See -h"); p_exit(PR_ECLARGS); } else { char* pch; *(pa->pd) = strtod(argv[3],&pch); if (*pch != '\0') { p_log(PLL_ERROR,"Wrong argmuent a. Should be double."); p_exit(PR_ECLARGS); } } } else if (strcmp(argv[1],"--etox") == 0) { pa->computeFunction = re_etox_va; } else if (strcmp(argv[1],"--ln") == 0) { pa->computeFunction = re_lnx_va; } else if (strcmp(argv[1],"--sqrt") == 0) { pa->computeFunction = re_sqrtx_va; } else if (strcmp(argv[1],"--argsinh") == 0) { pa->computeFunction = re_argsinhx_va; } else if (strcmp(argv[1],"--arctg") == 0) { pa->computeFunction = re_arctgx_va; } else { p_log(PLL_ERROR,"Wrong argument \"%s\".",argv[1]); p_exit(PR_ECLARGS); } if ((strToUint(argv[2],&pa->sigdig) != 0) || (pa->sigdig > DBL_DIG)) { p_log(PLL_ERROR,"Wrong sigdig, using default DBL_DIG = %d. See -h",DBL_DIG); pa->sigdig = DBL_DIG; } }
int p_init(int *argc, char*** argv) { P_UNUSED(argc); P_UNUSED(argv); if (!(g_wl_display = wl_display_connect(NULL))) { p_log("Failed to connect to a Wayland compositor.\n"); return (-1); } if (get_registry_objects() < 0) { p_log("The compositor does not provide the required Wayland " "interface objects.\n"); return (-1); } return 0; /* No error. */ }
void kill_error(int r) { if(nosignals == 0) { nosignals=1; p_debug(); p_log(LOG_ERROR,-1,lngtxt(636)); } exit(0x0); }
void term_error(int r) { if(nosignals == 1) return; nosignals=1; p_debug(); p_log(LOG_ERROR,-1,lngtxt(610)); flushconfig(); nosignals=0; return; }
int killedlink(int nlink) { pcontext; p_log(LOG_WARNING,-1,lngtxt(519), nlink,datalink(nlink)->host,datalink(nlink)->port); sysparty(lngtxt(520),datalink(nlink)->iam); killsocket(datalink(nlink)->outsock); datalink(nlink)->outstate=STD_NOCON; removetopology(me,datalink(nlink)->iam,lostlink); return -1; }
void ill_error(int r) { if(nosignals == 0) { nosignals=1; p_debug(); p_log(LOG_WARNING,-1,lngtxt(635)); nosignals=0; } return; }
/* initialize the module and hardware */ int illum_af_init(int my_IlluminateWidth, int my_IlluminateHeight, int my_CameraWidth, int my_CameraHeight) { p_log("STATUS:\tAlignmentFunctions: initializing"); /* store the image descriptors */ IlluminateWidth = my_IlluminateWidth; IlluminateHeight = my_IlluminateHeight; CameraWidth = my_CameraWidth; CameraHeight = my_CameraHeight; return 0; }
int translatederror(int uid, int err) { struct translatet *lkm; pcontext; p_log(LOG_ERROR,-1,lngtxt(867),uid,err); lkm=gettranslate(uid); pcontext; if(lkm==NULL) return 0x0; erasetranslate(uid); return 0x0; }
void hup_error(int r) { if(nosignals == 0) { nosignals=1; p_debug(); p_log(LOG_WARNING,-1,lngtxt(611)); if(*user(1)->login!=0) cmdrehash(1); nosignals=0; } return; }
void usr2_error(int r) { if(nosignals == 0) { nosignals=1; p_debug(); p_log(LOG_INFO,-1,lngtxt(633)); resetconfig(); readconfig(); loadusers(); nosignals=0; } return; }
int rhw_light_on(void) { DeviceData_type DeviceData = libD4000_GetDeviceData(DEVNUM); /* setup FrameBuf_off -- holds image for disabled state */ if(FrameBuf_off != NULL) { free(FrameBuf_off); } FrameBuf_off_size = DeviceData.DMDSizeinBytes; if((FrameBuf_off = malloc(FrameBuf_off_size)) == NULL) { p_log("ERROR:\thardware_D4000: Error allocating frame buffer"); return -3; } memset(FrameBuf_off, RHW_DISABLE_FILL, FrameBuf_off_size); /* prepare frame buffer */ return 0; }
/* loads alignment/transformation parameters */ int illum_af_load(float *al_params, int param_num) { int idx; /* make sure that we have the correct number of parameters */ if(param_num != ALIGNMENT_PARAM_NUM) { p_log("ERROR:\tAlignmentFunctions: incorrect number of parameters given to illum_load(). Parameter sets may be incompatible!"); return -1; } /* load the data blindly */ for(idx = 0; idx < ALIGNMENT_PARAM_NUM; idx++) { al_data[idx] = al_params[idx]; } return 0; }
int checklinkkill(int nlink,int errn) { int sock; pcontext; if(datalink(nlink)->type==LI_ALLOW) sock=datalink(nlink)->insock; else sock=datalink(nlink)->outsock; sysparty(lngtxt(556),datalink(nlink)->iam); p_log(LOG_WARNING,-1,lngtxt(557),nlink); killsocket(sock); datalink(nlink)->instate=STD_NOCON; datalink(nlink)->outstate=STD_NOCON; datalink(nlink)->insock=0; datalink(nlink)->outsock=0; removetopology(me,datalink(nlink)->iam,lostlink); return 0x0; }
unsigned long *__pmalloc(unsigned long size,char *module,char *function, int line) { unsigned long *rc; if (!(rc=(unsigned long *)malloc(size))) { p_log(LOG_ERROR,-1,lngtxt(602),module,function,line); exit(0x0); } memset(rc,0x0,size); #ifdef LOGALLOC if(logm==NULL) logm=fopen("log/alloc.log","w"); if(logm) { fprintf(logm,"%s/%s/%d: alloc(%d)=0x%08x\n",module,function,line,size,rc); fflush(logm); } #endif return rc; }
int killrelaylink(int nlink) { struct socketnodes *lkm; pcontext; p_log(LOG_WARNING,-1,lngtxt(511),datalink(nlink)->iam); lkm=getpsocketbysock(datalink(nlink)->outsock); if(lkm!=NULL) { lkm->sock->destructor=NULL; killsocket(datalink(nlink)->outsock); } lkm=getpsocketbysock(datalink(nlink)->insock); if(lkm!=NULL) { lkm->sock->destructor=NULL; killsocket(datalink(nlink)->insock); } datalink(nlink)->instate=STD_NOCON; datalink(nlink)->outstate=STD_NOCON; datalink(nlink)->insock=0; datalink(nlink)->outsock=0; return -1; }
int errorrelaylink(int nlink, int errn) { struct socketnodes *lkm; pcontext; p_log(LOG_ERROR,-1,lngtxt(510),datalink(nlink)->iam); lkm=getpsocketbysock(datalink(nlink)->outsock); if(lkm!=NULL) { lkm->sock->errorhandler=NULL; killsocket(datalink(nlink)->outsock); } lkm=getpsocketbysock(datalink(nlink)->insock); if(lkm!=NULL) { lkm->sock->errorhandler=NULL; killsocket(datalink(nlink)->insock); } datalink(nlink)->instate=STD_NOCON; datalink(nlink)->outstate=STD_NOCON; datalink(nlink)->insock=0; datalink(nlink)->outsock=0; return -1; }
/* returns offset, in pixels, between base_img and test_img for translation to bring images into register */ void register_image(short unsigned int *base_img, short unsigned int *test_img, int *x_offset, int *y_offset, int *score, FILE *score_matrix_fp) { int window_width = 100; int i, j, k, l; int a; int *score_matrix; int *flat_score_matrix; int score_matrix_index; int curr_score, best_score; int test_x_idx, test_y_idx, base_x_idx, base_y_idx; score_matrix = (int*)malloc((1000-window_width)*(1000-window_width)*sizeof(int)); flat_score_matrix = (int*)malloc((1000-window_width)*(1000-window_width)*sizeof(int)); score_matrix_index = 0; *x_offset = -10000; *y_offset = -10000; a = 500 - (window_width / 2); for(i = 0; i < 1000-window_width; i+=1) { /* y rows */ for(j = 0; j < 1000-window_width; j+=1) { /* x cols */ curr_score = 0; for(k=0; k<window_width; k+=2) { /* y rows */ for(l=0; l<window_width; l+=2) { /* x cols */ test_y_idx = k + a; test_x_idx = l + a; base_y_idx = k + i; base_x_idx = l + j; /* compute current difference */ curr_score += (abs(*(test_img + ((1000 * test_x_idx)+test_y_idx)) \ - *(base_img + ((1000 * base_x_idx)+base_y_idx)))); } // end for l } // end for k *(score_matrix + score_matrix_index) = curr_score; score_matrix_index++; } // end for j } // end for i /* now, flatten score matrix, then determine location of minimum */ /* sum of differences will be minimized when the images are in register */ flatten_image(score_matrix, flat_score_matrix, 1, 1000-window_width); best_score = INT_MAX; score_matrix_index = 0; for(i = 0; i < 1000-window_width; i++) { for(j = 0; j < 1000-window_width; j++) { if(*(flat_score_matrix + score_matrix_index) < best_score) { best_score = *(flat_score_matrix + score_matrix_index); *x_offset = j - a; *y_offset = i - a; fprintf(stdout, "%d %d %d\n", best_score, *x_offset, *y_offset); } score_matrix_index++; } } #ifdef DEBUG_STAGEALIGN fwrite(score_matrix, (1000-window_width) * (1000-window_width), sizeof(int), score_matrix_fp); fwrite(flat_score_matrix, (1000-window_width) * (1000-window_width), sizeof(int), score_matrix_fp); #endif if((*x_offset == -10000) || (*y_offset == -10000)) { p_log("ERROR: register_image did not find good offset"); *x_offset=0; *y_offset=0; *score = -1; } else { *score = best_score; } free(score_matrix); free(flat_score_matrix); } // end function
static void global_registry_remover(void *data, struct wl_registry *registry, uint32_t id) { p_log("Lost a registry object!\n"); }
int linkrelay(int npeer, int rootlink) { int tmpsock; struct socketnodes *lkm; char *ho; char vsl[10]; int issl=SSL_OFF; int nlink; int proto=AF_INET; pcontext; vsl[0]=0; #ifdef HAVE_SSL if(strstr(newpeer(npeer)->server,"S=")==newpeer(npeer)->server) { issl=SSL_ON; ho=newpeer(npeer)->server+2; strcpy(vsl,"SSL-"); } else #endif ho=newpeer(npeer)->server; p_log(LOG_INFO,-1,lngtxt(558), vsl, newpeer(npeer)->login, datalink(rootlink)->name, newpeer(npeer)->host, newpeer(npeer)->lnkport, ho, newpeer(npeer)->port, newpeer(npeer)->vhost); lkm=getpsocketbysock(newpeer(npeer)->insock); if(lkm!=NULL) { lkm->sock->flag=SOC_CONN; lkm->sock->param=npeer; lkm->sock->constructor=NULL; lkm->sock->constructed=NULL; lkm->sock->handler=checklinkdata; lkm->sock->errorhandler=errorrelaylink; lkm->sock->destructor=killrelaylink; } tmpsock=createsocket(0,ST_CONNECT,0,SGR_NONE,NULL,linkrelayconnected,errorrelaylink,checklinkdata,killrelaylink,linkrelayremap,proto,issl); tmpsock=connectto(tmpsock,ho,newpeer(npeer)->port,newpeer(npeer)->vhost); if (tmpsock!=0) { nlink=getnewlink(); if (nlink==0) { killsocket(tmpsock); p_log(LOG_ERROR,-1,lngtxt(559)); return -1; } datalink(nlink)->type=LI_RELAY; datalink(nlink)->instate=STD_CONN; datalink(nlink)->insock=newpeer(npeer)->insock; strmncpy(datalink(nlink)->iam,newpeer(npeer)->nick,sizeof(datalink(nlink)->iam)); strmncpy(datalink(nlink)->host,newpeer(npeer)->host,sizeof(datalink(nlink)->host)); strmncpy(datalink(nlink)->pass,newpeer(npeer)->pass,sizeof(datalink(nlink)->pass)); strmncpy(datalink(nlink)->name,newpeer(npeer)->name,sizeof(datalink(nlink)->name)); datalink(nlink)->port=datalink(nlink)->port; datalink(nlink)->outstate=STD_CONN; datalink(nlink)->outsock=tmpsock; if(lkm) lkm->sock->param=nlink; lkm=getpsocketbysock(tmpsock); if(lkm!=NULL) { lkm->sock->flag=SOC_SYN; lkm->sock->param=nlink; } clearpeer(npeer); return 0x0; } p_log(LOG_ERROR,-1,lngtxt(560),newpeer(npeer)->server,newpeer(npeer)->port); killsocket(newpeer(npeer)->insock); return -1; }
int processlink(int nlink, int sock, int state) { struct usernodes *th; struct linknodes *lh; int rc; char *pt,*pt2; #ifdef PARTYCHANNEL int rr = 0; char buf[600] = ""; char buf1[400] = ""; #endif char l; char o[]="->"; char i[]="<-"; char r[]="R "; char sic[500]; int last; pcontext; if (state!=STD_CONN) return 0x0; parse(); pcontext; if (!ifcommand("IAM") && !ifcommand(lngtxt(521))) broadcast(nlink); /* if its the IAM message, it does NOT get broadcasted */ pcontext; pt=strchr(ircto,'@'); #ifdef PARTYCHANNEL if(pt==NULL) pt=strchr(ircto,'*'); #endif pcontext; if (pt!=NULL) { *pt=0; pt++; if (strmcmp(pt,me)!=0 || (*ircto=='*' && strlen(pt)==1)) { pcontext; if (ifcommand(lngtxt(522))) { rc=checkuser(ircto); if (rc==0) { ap_snprintf(ircbuf,sizeof(ircbuf),lngtxt(523),me,ircnick,irchost,ircto); broadcast(0); return 0x0; } #ifdef PARTYCHANNEL ssnprintf(user(rc)->insock,lngtxt(524),ircnick,irchost,user(rc)->nick,irccontent); #else ssnprintf(user(rc)->insock,lngtxt(525),ircnick,irchost,user(rc)->nick,irccontent); #endif return 0x0; } pcontext; if (ifcommand(lngtxt(526))) { if(strstr(irccontent,o)!=NULL || strstr(irccontent,i)!=NULL) /* this is a listlink for the topology */ { pt=strchr(irccontent,'['); if(pt!=NULL) { pt++; pt2=strstr(pt,"]*"); if(pt2!=NULL) { *pt2=0; strmncpy(sic,pt,sizeof(sic)); /* in sic we got the first linker */ pt2++; pt=strstr(pt2,o); if(pt==NULL) pt=strstr(pt2,i); if(pt==NULL) return 0x0; pt2=strchr(pt+3,' '); if(pt2!=NULL) { *pt2=0; if(strstr(pt,o)==pt) { pt+=3; addtopology(sic,pt); } else { pt+=3; addtopology(pt,sic); } return 0x0; } } } } pcontext; #ifdef PARTYCHANNEL if(strstr(ircbuf,lngtxt(527))==ircbuf) { if(*ircto=='*') /* systemrequest */ { pt=strchr(irccontent,']'); if(pt!=NULL) { pt+=2; if(*pt=='*') { pt2=strchr(pt,'('); if (pt2!=NULL) { pt+=2; *pt2=0; ap_snprintf(buf,sizeof(buf),lngtxt(528),pt,irchost); if(partyadd(buf)==1) { ap_snprintf(buf1,sizeof(buf1),"%s%s\r\n",lngtxt(529),PARTYCHAN); ap_snprintf(buf,sizeof(buf),buf1,pt,irchost,pt,irchost); th=usernode; while(th!=NULL) { rc=th->uid; if(user(rc)->instate==STD_CONN && user(rc)->sysmsg==1 && user(rc)->parent==0) { writesock(user(rc)->insock,buf); } th=th->next; } return 0x0; } } } } } } #endif rc=checkuser(ircto); if (rc!=0) { ssnprintf(user(rc)->insock,lngtxt(530),ircnick,user(rc)->nick,irccontent); return 0x0; } } } } pcontext; if (ifcommand("IAM")) { if(*ircnick==0 || strchr(ircnick,' ')!=NULL || strchr(ircnick,'@')!=NULL || strchr(ircnick,'*')!=NULL) { sysparty(lngtxt(531)); killsocket(sock); datalink(nlink)->instate=STD_NOCON; datalink(nlink)->outstate=STD_NOCON; datalink(nlink)->insock=0; datalink(nlink)->outsock=0; clearlink(nlink); eraselinkini(nlink); return 0x0; } strmncpy(datalink(nlink)->iam,ircnick,sizeof(datalink(nlink)->iam)); addtopology(me,datalink(nlink)->iam); writelink(nlink); } pcontext; if (ifcommand(lngtxt(532))) { if (strmcmp(me,ircto)!=0) { p_log(LOG_ERROR,-1,lngtxt(533), nlink,datalink(nlink)->host,datalink(nlink)->port); killsocket(sock); removetopology(me,datalink(nlink)->iam,lostlink); datalink(nlink)->instate=STD_NOCON; datalink(nlink)->outstate=STD_NOCON; datalink(nlink)->insock=0; datalink(nlink)->outsock=0; clearlink(nlink); eraselinkini(nlink); return 0x0; } } pcontext; if (ifcommand(lngtxt(534))) { th=usernode; while (th!=NULL) { rc=th->uid; if ((user(rc)->instate==STD_CONN && user(rc)->parent==0 && user(rc)->sysmsg==1) || rc==1) { strmncpy(sic,irccontent,sizeof(sic)); #ifdef PARTYCHANNEL strmncpy(irccommand,lngtxt(535),sizeof(irccommand)); strmncpy(ircto,PARTYCHAN,sizeof(ircto)); if(strlen(ircto+1)<sizeof(ircto)) strcat(ircto," "); #endif /* keeping being compatible with earlier versions requires this */ if(strlen(ircnick)==6 && strstr(ircnick,lngtxt(536))==ircnick) { #ifdef PARTYCHANNEL if(strstr(irccontent,lngtxt(537))!=NULL) { pt=strstr(irccontent,lngtxt(538)); if(pt!=NULL) { pt+=5; pt2=strchr(pt,' '); if (pt2!=NULL) *pt2=0; strmncpy(ircnick,pt,sizeof(ircnick)); ap_snprintf(buf,sizeof(buf),lngtxt(539),pt,irchost); strcpy(irccommand,"JOIN"); strmncpy(irccontent,PARTYCHAN,sizeof(irccontent)); *ircto=0; if(rr==0) { partyadd(buf); rr=1; } } } if(strstr(irccontent,lngtxt(540))!=NULL) { pt=strstr(irccontent,lngtxt(541)); if(pt!=NULL) { pt+=5; pt2=strchr(pt,' '); if (pt2!=NULL) *pt2=0; strmncpy(ircnick,pt,sizeof(ircnick)); ap_snprintf(buf,sizeof(buf),lngtxt(542),pt,irchost); strcpy(irccommand,"PART"); strmncpy(irccontent,lngtxt(543),sizeof(irccontent)); if(rr==0) { partyremove(buf); rr=1; } } } #endif if(strstr(irccontent,lngtxt(544))==irccontent) { ap_snprintf(ircbuf,sizeof(ircbuf),lngtxt(545),me); broadcast(0); return 0x0; } if(strstr(irccontent,lngtxt(546))==irccontent) { pt=irccontent+11; pt2=strchr(pt,')'); if(pt2!=NULL) *pt2=0; removetopology(irchost,pt,lostlink); if(pt2!=NULL) *pt2=')'; } } #ifdef PARTYCHANNEL ap_snprintf(buf,sizeof(buf),lngtxt(547), ircnick,irchost,ircnick,irchost, irccommand,ircto,irccontent); if(user(rc)->instate==STD_CONN && user(rc)->parent==0 && user(rc)->sysmsg==1) writesock(user(rc)->insock,buf); #endif ap_snprintf(irccontent,sizeof(irccontent),"%s",sic); } th=th->next; } return 0x0; } pcontext; if (ifcommand("BWHO")) { th=usernode; while (th!=NULL) { rc=th->uid;last=0; if (user(rc)->instate!=STD_NOUSE) { if (user(rc)->parent != 0) l='^'; else { l='*';last=1; } if (user(rc)->sysmsg == 0) l='+'; if (*user(rc)->host==0) l=' '; else last=0; if(last==1) ap_snprintf(ircbuf,sizeof(ircbuf),lngtxt(548),me,ircnick,irchost,me,l,user(rc)->login,user(rc)->nick,user(rc)->network,user(rc)->server,user(rc)->user,user(rc)->last); else ap_snprintf(ircbuf,sizeof(ircbuf),lngtxt(549),me,ircnick,irchost,me,l,user(rc)->login,user(rc)->nick,user(rc)->network,user(rc)->server,user(rc)->user); broadcast(0); } th=th->next; } return 0x0; } pcontext; if (ifcommand(lngtxt(550))) { lh=linknode; while (lh!=NULL) { rc=lh->uid; l=' '; if (datalink(rc)->type!=0) { if (datalink(rc)->type==LI_LINK) { pt=o; if (datalink(rc)->outstate==STD_CONN) l='*'; } if (datalink(rc)->type==LI_ALLOW) { if (datalink(rc)->instate==STD_CONN) l='*'; pt=i; } if (datalink(rc)->type==LI_RELAY) { pt=r; l='*';} ap_snprintf(ircbuf,sizeof(ircbuf),lngtxt(551),me,ircnick,irchost,me,l,rc,pt,datalink(rc)->iam,datalink(rc)->host,datalink(rc)->port); broadcast(0); } lh=lh->next; } return 0x0; } pcontext; #ifdef PARTYCHANNEL if (ifcommand(lngtxt(552))) { strmncpy(partytopic,irccontent,sizeof(partytopic)); th=usernode; while (th!=NULL) { rc=th->uid; if (user(rc)->instate==STD_CONN && user(rc)->parent==0) { ap_snprintf(buf1,sizeof(buf1),"%s%s%s",lngtxt(553),PARTYCHAN,lngtxt(554)); ssnprintf(user(rc)->insock,buf1, ircnick,irchost,ircnick,irchost,irccontent); } th=th->next; } } #endif #ifdef INTNET if (ifcommand(lngtxt(555))) { pt=strchr(ircbuf,'\r'); if(pt==NULL) pt=strchr(ircbuf,'\n'); if(pt!=NULL) *pt=0; strmncpy(ircbuf,rtrim(irccontent),sizeof(ircbuf)); internalinbound(0,nlink); } #endif pcontext; return 0x0; }