void CVideoDecoder2::Close(CLOSERESOURCECB cb) { if(bInit){ Finit(); } CResource::Close(cb); }
/* * Remove a user from the list. * Destroy all his permissions and completely detach him from the session. */ int UserDel(char *name, struct acluser **up) { struct acluser *u; int i; struct display *old, *next; if (!up) up = FindUserPtr(name); if (!(u = *up)) return -1; /* he who does not exist cannot be removed */ old = display; for (display = displays; display; display = next) { next = display->d_next; /* read the next ptr now, Detach may zap it. */ if (D_user != u) continue; if (display == old) old = NULL; Detach(D_REMOTE); } display = old; *up = u->u_next; for (up = &users; *up; up = &(*up)->u_next) { /* unlink all group references to this user */ struct aclusergroup **g = &(*up)->u_group; while (*g) { if ((*g)->u == u) { struct aclusergroup *next = (*g)->next; free((char *)(*g)); *g = next; } else g = &(*g)->next; } } ACLBYTE(userbits, u->u_id) &= ~ACLBIT(u->u_id); /* restore the bits in his slot to default: */ AclSetPerm(NULL, u, default_w_bit[ACL_READ] ? "+r" : "-r", "#"); AclSetPerm(NULL, u, default_w_bit[ACL_WRITE]? "+w" : "-w", "#"); AclSetPerm(NULL, u, default_w_bit[ACL_EXEC] ? "+x" : "-x", "#"); AclSetPerm(NULL, u, default_c_bit[ACL_EXEC] ? "+x" : "-x", "?"); for (i = 0; i < ACL_BITS_PER_WIN; i++) free((char *)u->u_umask_w_bits[i]); debug1("FREEING user structure for %s\n", u->u_name); UserFreeCopyBuffer(u); free((char *)u); if (!users) { debug("Last user deleted. Feierabend.\n"); Finit(0); /* Destroying whole session. Noone could ever attach again. */ } return 0; }
int main(int argc, char *argv[]) { char *p, *re; size_t len; Subrange *r; void (*fn)(ulong p0, ulong p1); /* This isn't wonderful: assume that the regexp is delimited by // */ if (argc < 2 || *(re = argv[1]) != '/' || (len = strlen(re)) < 2) { fprintf(stderr,"Usage: x /regexp/\n"); exit(1); } if (re[--len] == '/') re[len] = 0; re++; /* skip / */ if (len == 0) { fprintf(stderr,"null regexp\n"); exit(1); } if (init_regexp(re)) { fprintf(stderr,"Invalid regexp\n"); exit(1); } p = strrchr(argv[0], '/'); p = p? p+1 : argv[0]; switch (*p) { case 'x' : fn = fn_x; break; case 'y' : fn = fn_y; break; case 'g' : fn = fn_g; break; case 'v' : fn = fn_v; break; default: fprintf(stderr,"Uknown program name!\n"); exit(1); } read_info(0); /* Don't reverse ranges */ Finit(&runefile, tmpfilename); write_info(); while (r = next_range()) (*fn)(r->p0, r->p1); exit(0); }
CTLSStorageInstance::~CTLSStorageInstance() { Finit(); }
int CVideoDecoder2::Init(void) { int ret = -1; while (!bInit){ pQueueMutex = (uv_mutex_t*)malloc(sizeof(uv_mutex_t)); if(!pQueueMutex){ ret = -1; break; } ret = uv_mutex_init(pQueueMutex); if (ret < 0){ free(pQueueMutex); pQueueMutex = NULL; break; } pQueueNotEmpty = (uv_cond_t*)malloc(sizeof(uv_cond_t)); if(!pQueueNotEmpty){ ret = -1; break; } ret = uv_cond_init(pQueueNotEmpty); if (ret < 0){ free(pQueueNotEmpty); pQueueNotEmpty = NULL; break; } // Register all codecs avcodec_register_all(); pCodec = avcodec_find_decoder(codecId); if (!pCodec){ ret = -1; break; } pCodecCtx = avcodec_alloc_context3(pCodec); if (!pCodecCtx){ ret = -1; break; } if (avcodec_open2(pCodecCtx, pCodec, NULL) < 0){ ret = -1; break; } pCodecParserCtx = av_parser_init(codecId); if (!pCodecParserCtx){ ret = -1; break; } decodeWorkerReq.data = this; ret = uv_queue_work(pLoop, &decodeWorkerReq, DecodeWorker, AfterDecode); if(ret < 0){ bStop = true; break; } bInit = true; } if (!bInit){ Finit(); return -1; } else { return 0; } }
void main(int argc, char *argv[]) { char val[512], *p; char rbuf[512+1]; char svcname[17]; int timeout; long revent, rcvlen; FLDKEY key; FBUF *transf; FILE *fp; int cd, n, fflag=0, i, idx=0; int ret; /* if (argc != 2) { fprintf(stderr, "Usage:%s input-file\n", argv[0]); exit(1); } */ if(parseArg(argc, argv)<0){ printf("parseArg error!!\n"); exit(1); } if( (fp=fopen(filename, "r")) == (FILE *)0 ){ printf( "file open error [%d:%s]\n", errno, strerror(errno) ); exit( 1 ); } memset( svcname, 0x00, sizeof(svcname) ); if( get_svcname(fp, svcname) < 0 ){ printf( "get_svcname() failed!! -- (input-file=%s)\n", argv[1] ); exit(1); } timeout = 5; n = tpstart((TPSTART_T *)NULL); if (n < 0) { fprintf(stderr, "tpstart fail tperrno = %s\n", tperrno); exit(1); } printf("tpstart ok!\n"); transf = fballoc(100, 100); if( transf == NULL) { fprintf(stderr, "fballoc fail: rcvbuf tperrno = %d\n", tperrno); tpend(); exit(1); } Finit(transf, Fsizeof(transf)); while( 1 ){ memset( rbuf, 0x00, sizeof(rbuf) ); if( fgets(rbuf, sizeof(rbuf)-1, fp)==(char *) 0 ){ break; } p = strchr(rbuf, '\n'); if( p == (char *)0 && strlen(rbuf) >= sizeof(rbuf)-1 ){ printf( "한 라인의 길이가 너무 길어 무시합니다..\n" ); printf( "=>[%s]\n", rbuf ); continue; } *p = 0x00; memset( val, 0x00, sizeof(val) ); key = 0; if( line_proc(rbuf, &key, &idx, val)<0 ) continue; PUT(key, idx, val); printf( "key=%d, idx=%d, val=%s\n", key, idx, val ); fflag = 1; } if( !fflag ){ printf( "not exist send data .....\n" ); fbfree( transf ); tpend(); exit(1); } printf( ">>service[%s], send data->\n", svcname ); fbprint( transf ); printf( "\t----------------------------------------------------\n\n\n" ); fflush( stdout ); /* original cd = tpconnect(svcname, (char *)transf, fbget_fbsize(transf), TPRECVONLY); */ if(flag==1){ ret = tx_begin(); printf("tx_begin() [%s] \n", ret==TX_OK ? "success" : "fail"); if(ret!=TX_OK) exit(1); } cd = tpcall(svcname, (char *)transf, fbget_fbsize(transf), (char **)&transf, (long *)&rcvlen, 0); if (cd < 0) { if(flag==1){ ret = tx_rollback(); printf("tx_rollback() [%s] \n", ret==TX_OK ? "success" : "fail"); if(ret!=TX_OK) exit(1); } fprintf(stderr, "tpcall fail tperrno = %d\n", tperrno); fbfree( transf ); tpend(); exit(1); } fprintf(stdout, "TPCALL SUCCESS!!\n"); if(flag==1){ ret = tx_commit(); printf("tx_commit() [%s] \n", ret==TX_OK ? "success" : "fail"); if(ret!=TX_OK) exit(1); } /* i = 0; while( 1 ){ Finit(transf, Fsizeof(transf)); n = tprecv(cd, (char **)&transf, (long *)&rcvlen, 0, &revent); if (n < 0 && tperrno == TPEEVENT ){ if(revent == TPEV_SVCSUCC ) printf( "service completed(TPSUCC) !\n" ); else if(revent == TPEV_SVCFAIL ) printf( "service completed(TPFAIL) !\n" ); else{ printf( "tprecv error : event[0x%08X], tperrno[%d]\n", revent, tperrno ); break; } } else if( n < 0 ){ printf( "tprecv error(no event) : tperrno[%d]\n", tperrno ); break; } fbprint( transf ); printf( "\t------------------------------------------------------[%3d th]\n\n", i++ ); fflush( stdout ); if (n < 0 ) break; } */ fbfree(transf); tpend(); }