📄 serverlib.c
字号:
/******************************************//** functions for server **//******************************************/#include "../include/serverlib.h"#include "../include/operdb.h"#include "../include/structs.h"#include "../include/stddef.h"#include <stdio.h>#include <unistd.h>#include <signal.h>void query(int index){ extern SHM *shm; USER user; char name[11]; int shmid;/* shmid = shmget(KEY , SHM_SIZE , 0600); shm = (SHM*)shmat(shmid , 0 , 0);*/ operdb(&user , (shm->swap_arr)[index].swap.inta); //strcpy( (shm->swap_arr)[index].swap.chara , user.name); //memcpy( (shm->swap_arr)[index].swap.chara , user.name , 10); memcpy( name , user.name , 10); name[10] = '\0'; strcpy( (shm->swap_arr)[index].swap.chara , name); strcpy( (shm->swap_arr)[index].swap.charb , user.pwd); (shm->swap_arr)[index].swap.inta = user.id; (shm->swap_arr)[index].swap.intb = user.money; (shm->swap_arr)[index].swap.over = DONE;// shmdt(shm);// return ;};void changepwd(int index){ USER user; SHM *shm; int shmid; shmid = shmget(KEY,0,0); shm = (SHM*)shmat(shmid,0,0); operdb(&user, (shm->swap_arr)[index].swap.inta); //int ptr1 = 0; int ptr1 = strcmp(user.pwd,(shm->swap_arr)[index].swap.chara); if(ptr1==0){ if((strcmp((shm->swap_arr)[index].swap.charb,(shm->swap_arr)[index].swap.charc))==0){ (shm->swap_arr)[index].swap.ok=1; strcpy(user.pwd,(shm->swap_arr)[index].swap.charb); operdb(&user,1); }else{ (shm->swap_arr)[index].swap.ok=2; } }else{ (shm->swap_arr)[index].swap.ok = 3; } (shm->swap_arr)[index].swap.over = DONE; // return;}void trans(int index){ extern SHM *shm; USER *user1 = (USER *)malloc(sizeof(USER)); USER *user2 = (USER *)malloc(sizeof(USER)); if(operdb(user1, (shm->swap_arr)[index].swap.inta) == -1 ) { (shm->swap_arr)[index].swap.ok = EID1; (shm->swap_arr)[index].swap.over = DONE; return; } if(strcmp(user1->pwd, (shm->swap_arr)[index].swap.chara) != 0) { (shm->swap_arr)[index].swap.ok = EPWD; (shm->swap_arr)[index].swap.over = DONE; return; } if(operdb(user2, (shm->swap_arr)[index].swap.intb) == -1) { (shm->swap_arr)[index].swap.ok = EID2; (shm->swap_arr)[index].swap.over = DONE; return; } if( user1->money < (shm->swap_arr)[index].swap.intc ) { (shm->swap_arr)[index].swap.ok = EMONEY; (shm->swap_arr)[index].swap.over = DONE; return; } else { user1->money -= (shm->swap_arr)[index].swap.intc; user2->money += (shm->swap_arr)[index].swap.intc; (shm->swap_arr)[index].swap.intc = user1->money; operdb(user1, UPDATE); operdb(user2, UPDATE); }// free(user1);// free(user2); (shm->swap_arr)[index].swap.over = DONE;}void draw(int index){ USER user; extern SHM *shm; int b; operdb(&user,(shm->swap_arr)[index].swap.inta); b = strcmp((shm->swap_arr)[index].swap.charb,user.pwd); if(b == 0){ if((shm->swap_arr)[index].swap.intb > user.money){ (shm->swap_arr)[index].swap.ok = EMONEY; (shm->swap_arr)[index].swap.over = DONE; return; }else{ user.money -= (shm->swap_arr)[index].swap.intb; (shm->swap_arr)[index].swap.intb = user.money; operdb(&user,UPDATE); (shm->swap_arr)[index].swap.over = DONE; return; } }else{ (shm->swap_arr)[index].swap.ok = EPWD; (shm->swap_arr)[index].swap.over = DONE; return; } (shm->swap_arr)[index].swap.over = DONE; return;}void save(int index){ extern SHM * shm; USER user; operdb(&user, (shm->swap_arr)[index].swap.inta); if(strcmp( user.pwd, (shm->swap_arr)[index].swap.charb) == 0) { user.money += (shm->swap_arr)[index].swap.intb; operdb(&user, UPDATE); (shm->swap_arr)[index].swap.over = DONE; (shm->swap_arr)[index].swap.intb = user.money; } else { (shm->swap_arr)[index].swap.ok = EPWD; (shm->swap_arr)[index].swap.over = DONE; return; } (shm->swap_arr)[index].swap.over = DONE; return;} void adduser(int index){ extern SHM *shm; USER user ; FILE *file; file = fopen("../file/value.add","r+"); int uid; fread(&uid,sizeof(int),1,file); user.id = uid; strcpy(user.name,(shm->swap_arr)[index].swap.chara); strcpy(user.pwd,(shm->swap_arr)[index].swap.charb); user.money = (shm->swap_arr)[index].swap.intb; (shm->swap_arr)[index].swap.inta = uid; operdb(&user,2); fseek(file,0,0); uid = uid + 1; printf("value %d\n",uid); fwrite(&uid,sizeof(int),1,file); (shm->swap_arr)[index].swap.ok = 1; (shm->swap_arr)[index].swap.over = DONE; fclose(file); return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -