/* * Rollbacks a transaction. */ static int rollback (lua_State *L) { mysql_rec *m; m = (mysql_rec *) luaL_checkudata(L, 1, IS_MYSQL_METATABLE); if (!m->mysql) { lua_pushliteral(L, "connection is closed"); lua_error(L); } if (!m->intransaction) { lua_pushliteral(L, "no transaction"); lua_error(L); } execute_internal(L, m, "ROLLBACK"); m->intransaction = 0; return 0; }
/* * Begins a transaction. */ static int begin (lua_State *L) { mysql_rec *m; m = (mysql_rec *) luaL_checkudata(L, 1, IS_MYSQL_METATABLE); if (!m->mysql) { lua_pushliteral(L, "connection is closed"); lua_error(L); } if (m->intransaction) { lua_pushliteral(L, "transaction already started"); lua_error(L); } execute_internal(L, m, "START TRANSACTION"); m->intransaction = 1; return 0; }
int main(int argc, char *argv[]) { //struct rusage usage; int status,i,l,j,ii,length,l1,l2,controld,start,end,bpid; char *input_str; char c; int internal=0; int job_no; char **ncomms; char **args_copy; char prompt[1000]; char user[100],host[100]; pid_t pid; controld=0; //createsignal(); shell_pgid=getpid(); if (setpgid (shell_pgid, shell_pgid) < 0) { perror ("Couldn't put the shell in its own process group"); exit (1); } // handle sigint with hello signal(SIGINT, SIG_IGN); if(getcwd(home, sizeof(home))!=NULL) { while(1) { position=0; backexit=0; // back_index=0; flag=0; // printf("<prachi@LenovoG500s"); if(controld==0) printprompt(); controld=0; for(i=0;i<1000;i++) prompt[i]='\0'; if(getcwd(prompt, sizeof(prompt))!=NULL) { input_str=get_input(); if(input_str[0]!='\0') {i=0; ncomms=split_input3(input_str,1); position=ind; while(position--) { // printf("pid: %d\n",shell_pgid); internal=0; // args contains the "pipe" parsed commands args=split_input3(ncomms[i],2); if(args[0]!="\0"); { // check for built in commands if(args[0][0]=='c' && args[0][1]=='d') internal=1; else if(args[0][0]=='e' && args[0][1]=='x' && args[0][2]=='i' && args[0][3]=='t') internal=1; else if(args[0][0]=='e' && args[0][1]=='c' && args[0][2]=='h' && args[0][3]=='o') internal=1; else if(args[0][0]=='p' && args[0][1]=='w' && args[0][2]=='d') internal=1; else if(args[0][0]=='q' && args[0][1]=='u' && args[0][2]=='i' && args[0][3]=='t') internal=1; else if(args[0][0]=='f' && args[0][1]=='g') { // printf("fg\n"); internal=-1; } if(internal!=1 && internal!=-1) { int len; len=strlen(args[0]); if(args[0][len-1]=='&') back_mark=1; pid=fork(); if(pid==0) loop_pipe(args); else if(pid<0) perror("myshell"); else { if(back_mark!=1) waitpid(pid,&status, WUNTRACED); else { signal(SIGCHLD, childhandler); strcpy(copy,args[0]); len=strlen(copy); copy[len-1]='\0'; strcpy(back_job[back_index].processname,copy); // printf("args: %s",args[0]); back_job[back_index].pro_id=pid; back_job[back_index].back_active=1; back_index++; back_mark=0; // storing background processes data(pid , name) into an array printf("%d\n",pid); } } } else if(internal==1) { args=split_input2(args[0]); // if built-in commands execute_internal(flag); } else if(internal==-1) { // execute fg pid_t fpid; int status; args=split_input2(args[0]); fpid = execute_fg(atoi(args[1])); // printf("fpid: %d\n",fpid); if(fpid>0) { kill(fpid, SIGCONT); waitpid(fpid,&status,WCONTINUED); } } } i++; } free(input_str); free(args); } else controld=1; } else perror("myshell:"); } } else { perror("myshell:"); return EXIT_SUCCESS; } return 0; }
void php_uopz_execute_internal(zend_execute_data *execute_data, zval *return_value) { /* {{{ */ if (zend_execute_internal_function) { zend_execute_internal_function(execute_data, return_value); } else execute_internal(execute_data, return_value); } /* }}} */