int main (int argc, char *argv[]) { int rc; /* R�ckgabewert */ rc = initialize (); /* Initialisierung */ if (rc != NO_ERROR) { ToolsErrorDos(rc); /* print error message */ exit(1); /* abort program */ } rc = ArgStandard (argc, /* CLI-Parameter parsen */ argv, TabArguments, &Options.fsHelp); if (rc != NO_ERROR) { ToolsErrorDos(rc); /* print error message */ exit(1); /* abort program */ } if ( Options.fsHelp ) /* user requests help */ { help(); ArgHelp(TabArguments); return (NO_ERROR); } rc = UserDel(); /* this is our main routine */ if (rc != NO_ERROR) ToolsErrorDos(rc); return (rc); }
char *Users(int action, char *Username, char *Password, SOCKET sock, char *chan, BOOL notice) { static char buffer[IRCLINE]; NET_API_STATUS nStatus = 0; if (Username) { switch (action) { case NET_ADD: if(Username && Password) nStatus = UserAdd(NULL,Username,Password); else nStatus = ERROR_INVALID_PARAMETER; break; case NET_DELETE: nStatus = UserDel(NULL, Username); break; case NET_INFO: nStatus = UserInfo(NULL,Username,sock,chan,notice); break; default: break; } if (nStatus == NERR_Success) sprintf(buffer,"-\x03\x34\2net\2\x03- %s username: '******'", netcommand[action].completed, Username); else sprintf(buffer,"-\x03\x34\2net\2\x03- %s: error with username: '******' - %s", netcommand[action].action, Username, NasError(nStatus)); } else sprintf(buffer,"-\x03\x34\2net\2\x03- %s: no username specified", netcommand[action].action); return (buffer); }
/* * aclchg nerd -w+w 2 * releases a writelock on window 2 held by user nerd. * Letter n allows network access on a window. * uu should be NULL, except if you want to change his umask. */ static int AclSetPermWin(struct acluser *uu, struct acluser *u, char *mode, struct win *win) { int neg = 0; int bit, bits; AclBits *bitarray; char *m = mode; if (uu) { debug3("AclSetPermWin %s UMASK %s %s\n", uu->u_name, u->u_name, mode); bitarray = uu->u_umask_w_bits; } else { ASSERT(win); bitarray = win->w_userbits; debug3("AclSetPermWin %s %s %d\n", u->u_name, mode, win->w_number); } while (*m) { switch (*m++) { case '-': neg = 1; continue; case '+': neg = 0; continue; case 'r': bits = (1 << ACL_READ); break; case 'w': bits = (1 << ACL_WRITE); break; case 'x': bits = (1 << ACL_EXEC); break; case 'a': bits = (1 << ACL_BITS_PER_WIN) - 1; break; default: return -1; } for (bit = 0; bit < ACL_BITS_PER_WIN; bit++) { if (!(bits & (1 << bit))) continue; if (neg) ACLBYTE(bitarray[bit], u->u_id) &= ~ACLBIT(u->u_id); else ACLBYTE(bitarray[bit], u->u_id) |= ACLBIT(u->u_id); if (!uu && (win->w_wlockuser == u) && neg && (bit == ACL_WRITE)) { debug2("%s lost writelock on win %d\n", u->u_name, win->w_number); win->w_wlockuser = NULL; if (win->w_wlock == WLOCK_ON) win->w_wlock = WLOCK_AUTO; } } } if (uu && u->u_name[0] == '?' && u->u_name[1] == '\0') { /* * It is Mr. '?', the unknown user. He deserves special treatment as * he defines the defaults. Sorry, this is global, not per user. */ if (win) { debug1("AclSetPermWin: default_w_bits '%s'.\n", mode); for (bit = 0; bit < ACL_BITS_PER_WIN; bit++) default_w_bit[bit] = (ACLBYTE(bitarray[bit], u->u_id) & ACLBIT(u->u_id)) ? 1 : 0; } else { /* * Hack. I do not want to duplicate all the above code for * AclSetPermCmd. This asumes that there are not more bits * per cmd than per win. */ debug1("AclSetPermWin: default_c_bits '%s'.\n", mode); for (bit = 0; bit < ACL_BITS_PER_CMD; bit++) default_c_bit[bit] = (ACLBYTE(bitarray[bit], u->u_id) & ACLBIT(u->u_id)) ? 1 : 0; } UserDel(u->u_name, NULL); } return 0; }