Example #1
0
inline extern bool_t createDir (char *name) {
  struct dirEntryStruct *entry;

  getBlock (currentDir);

  if (nameValid (name)) {
    if ((entry = getUnusedEntry())) {// nicht mehr als 256 , da dir nicht mehr ausgibt!
      if (!getEntryByName (name)) { //alle entrys auch files!
        if ((entry->startBlock = allocateBlock())) {

          dirBufferChanged = TRUE;

          /* set entry */
          memcpy (entry->fileName, name, FILE_NAME_SIZE);
          entry->fileSize = 0;
          entry->fileType = DIR;
          entry->readOnly = FALSE;
          entry->splat = FALSE;

          { /* init new directory block */
            getBlock (entry->startBlock);
            memset (&dirBuffer, '\0', BLOCKSIZE);
            dirBuffer.dirEntry[0].startBlock = currentDir;
            memcpy_P (dirBuffer.dirEntry[0].fileName, PSTR ("."), 3);
            dirBuffer.dirEntry[0].fileSize = 0;
            dirBuffer.dirEntry[0].fileType = DIR;
            dirBuffer.dirEntry[0].readOnly = TRUE;
            dirBuffer.dirEntry[0].splat = FALSE;
            dirBufferChanged = TRUE;
          }

          flushDirBuffer();
          flushFreeBlockList();
          return TRUE;
        }
      }
    }
  }
  return FALSE;
}
Example #2
0
inline extern bool_t openWrite (char *name, uint8_t fileType,
                                uint8_t channel) {
  struct dirEntryStruct *entry;
  struct channelTableStruct *channelStruct = &channelTable[channel];

  if (nameValid (name)) {
    if (channelStruct->fileState == NO_FILE) {
      getBlock (currentDir);
      if (!getEntryByName (name)) {
        if ((entry = getUnusedEntry())) {
          /* create first inode */
          memset (&(channelStruct->inode), '\0', BLOCKSIZE);

          if ((channelStruct->inodeBlock = allocateBlock())) {
            /* set entry */
            entry->startBlock = channelStruct->inodeBlock;
            memcpy (entry->fileName, name, FILE_NAME_SIZE);
            entry->fileSize = 0;
            entry->fileType = fileType;
            entry->splat = TRUE;
            /* set channel struct */
            memcpy (&channelStruct->dirEntry, entry,
                    sizeof (struct dirEntryStruct));
            channelStruct->dirBlock = currentDir;
            channelStruct->inodePtr = 0;
            /* save entry to disk */
            dirBufferChanged = TRUE;
            flushDirBuffer();

            return TRUE;
          }
        }
      }
    }
  }
  return FALSE;
}
Example #3
0
void newUser(int sd, char *buff) {
	//TODO: add uniquenick support
	char sendbuff[512];
	char nick[GP_NICK_LEN],email[GP_EMAIL_LEN],pass[GP_PASSWORD_LEN],uniquenick[GP_NICK_LEN];
	int userid,profileid;
	find_param("uniquenick",buff,uniquenick,sizeof(uniquenick));
	if(!find_param("nick", buff, nick, sizeof(nick))) {
	       sendError(sd,"Error recieving request");
	       return;	
	}
	mysql_real_escape_string(conn,nick,nick,strlen(nick));
	if(!find_param("email", buff, email, sizeof(email))) {
	       sendError(sd,"Error recieving request");
	       return;	
	}
	mysql_real_escape_string(conn,email,email,strlen(email));
	if(!find_param("pass", buff, pass, sizeof(pass))) {
		if(!find_param("passenc",buff,pass,sizeof(pass))) {
		       sendError(sd,"Error recieving request");
		       return;	
		} else {
			char *dpass;
			int passlen = strlen(pass);
			dpass = (char *)base64_decode((uint8_t *)pass, &passlen);
        		passlen = gspassenc((uint8_t *)dpass);
			strcpy(pass,dpass);
			free(dpass);
		}
	}
	mysql_real_escape_string(conn,pass,pass,strlen(pass));
	userid = getUserIDFromEmail(conn,email);
	if(userid == 0 || !tryPassword(conn,userid,pass)) {
		formatSend(sd,true,0,"\\nur\\%d",GP_NEWUSER_BAD_PASSWORD);
		return;
	}
	profileid = getProfileIDFromNickEmail(conn, nick, email);
	if(profileid != 0) {
		formatSend(sd,true,0,"\\nur\\%d\\pid\\%d",GP_NEWUSER_BAD_NICK,profileid);
		return;
	}
	if(!nameValid(nick,false)) {
		formatSend(sd,true,0,"\\nur\\%d",GP_NEWUSER_BAD_NICK);
		return;
	}
	if(uniquenick[0] != 0) {
		profileid = getProfileIDFromUniquenick(conn,uniquenick);
		if(profileid != 0) {
			formatSend(sd,true,0,"\\nur\\%d",GP_NEWUSER_UNIQUENICK_INUSE);
			return;
		}
		if(!nameValid(uniquenick,false)) {
			formatSend(sd,true,0,"\\nur\\%d",GP_NEWUSER_UNIQUENICK_INVALID);
			return;
		}
	}
	if(uniquenick[0] != 0) {
		profileid = makeNewProfileWithUniquenick(conn,nick,uniquenick,userid);
	} else {
		profileid = makeNewProfile(conn,nick,userid);
	}
	if(profileid != 0) {
		formatSend(sd,true,0,"\\nur\\0\\pid\\%d",profileid);
		return;
	}
		
}