コード例 #1
0
void
list (int flag, int non_priv)
{
  FILE *in = NULL;
  FILE *out = NULL;
  int socket = -1;
  if (opensock (&socket, &in, &out))
    {
      client_type_t ctt = DBCTL;
      fwrite (&ctt, sizeof (client_type_t), 1, out);
      fflush (out);

      DbCtlCommand command = { 0 };
      command.command = LIST;
      strcpy (command.parameter, "");
      strcpy (command.options.username, "");
      command.options.cpu = 0;
      command.options.level = 0;
      command.options.read = 0;
      command.options.write = 0;
      command.options.timeout = 0;
      command.options.user_max_connections = 0;

      fwrite_wrapper (&command, sizeof (DbCtlCommand), 1, out);
      fflush (out);

      print_list (in, flag, non_priv);
      closesock (socket, in, out);
    }
  else
    {

      closesock (socket, in, out);
    }
}
コード例 #2
0
ファイル: kfile.cpp プロジェクト: havlenapetr/Scummvm
reg_t kFPuts(EngineState *s, int funct_nr, int argc, reg_t *argv) {
	int handle = argv[0].toUint16();
	char *data = kernel_dereference_char_pointer(s, argv[1], 0);

	fwrite_wrapper(s, handle, data, strlen(data));
	return s->r_acc;
}
コード例 #3
0
GList *
read_info (FILE * in)
{
  GList *recv_accounts = NULL;
  Account *ac;
  int new_record;
  int tester = 1;

  while (fread_wrapper (&new_record, sizeof (int), 1, in))
    {
      if (new_record == 1)
	{
	  fwrite_wrapper (&tester, sizeof (int), 1, in);
	}
      else if (new_record == 0)
	{
	  ac = malloc (sizeof (Account));
	  ac->id = malloc (sizeof (username_t));
	  ac->users = NULL;
	  dbtop_exch dt;
	  if (fread_wrapper (&dt, sizeof (dbtop_exch), 1, in))
	    {
	      strncpy (ac->id, dt.id, sizeof (username_t));
	      memcpy (&ac->current, &dt.current, sizeof (Stats));
	      memcpy (&ac->short_average, &dt.short_average, sizeof (Stats));
	      memcpy (&ac->mid_average, &dt.mid_average, sizeof (Stats));
	      memcpy (&ac->long_average, &dt.long_average, sizeof (Stats));
	      memcpy (&ac->restricted, &dt.restricted, sizeof (int));
	      memcpy (&ac->timeout, &dt.timeout, sizeof (int));
	      memcpy (&ac->info, &dt.info, sizeof (restrict_info));
	      memcpy (&ac->start_count, &dt.start_count, sizeof (time_t));
	      recv_accounts = g_list_append (recv_accounts, ac);
	    }
	  else
	    {
	      perror ("Done");
	      exit (0);
	    }
	}
      else
	return recv_accounts;
    }
  return recv_accounts;
}
コード例 #4
0
ファイル: dbtop.c プロジェクト: damolp/mysql-governor
void *read_info() {
	Account *ac;
	int new_record;
	int tester = 1;
	while (fread_wrapper(&new_record, sizeof(int), 1, in)) {
		if (new_record == 1) {
			reset_recv_accounts();
			fwrite_wrapper(&tester, sizeof(int), 1, in);
		} else if (new_record == 0) {
			ac = malloc(sizeof(Account));
			ac->id = malloc(sizeof(username_t));
			ac->users = NULL;
			dbtop_exch dt;
			if (fread_wrapper(&dt, sizeof(dbtop_exch), 1, in)) {
				strncpy(ac->id, dt.id, sizeof(username_t));
				memcpy(&ac->current, &dt.current, sizeof(Stats));
				memcpy(&ac->short_average, &dt.short_average, sizeof(Stats));
				memcpy(&ac->mid_average, &dt.mid_average, sizeof(Stats));
				memcpy(&ac->long_average, &dt.long_average, sizeof(Stats));
				memcpy(&ac->restricted, &dt.restricted, sizeof(int));
				memcpy(&ac->timeout, &dt.timeout, sizeof(int));
				memcpy(&ac->info, &dt.info, sizeof(restrict_info));
				memcpy(&ac->start_count, &dt.start_count, sizeof(time_t));
				recv_accounts = g_list_append(recv_accounts, ac);
			} else {
				perror("Done");
				exit(0);
			}
		} else {
			reset_accounts();
			if (recv_accounts != NULL)
				g_list_foreach(recv_accounts, (GFunc) _copy_to_showed_accounts,
						NULL);
			sort_accounts();
		}
	}
	return NULL;
}
コード例 #5
0
ファイル: kfile.cpp プロジェクト: havlenapetr/Scummvm
reg_t kFileIO(EngineState *s, int funct_nr, int argc, reg_t *argv) {
	int func_nr = argv[0].toUint16();

	switch (func_nr) {
	case K_FILEIO_OPEN : {
		char *name = kernel_dereference_char_pointer(s, argv[1], 0);
		int mode = argv[2].toUint16();

		file_open(s, name, mode);
		debug(3, "K_FILEIO_OPEN(%s,0x%x)", name, mode);
		break;
	}
	case K_FILEIO_CLOSE : {
		int handle = argv[1].toUint16();
		debug(3, "K_FILEIO_CLOSE(%d)", handle);

		file_close(s, handle);
		break;
	}
	case K_FILEIO_READ_RAW : {
		int handle = argv[1].toUint16();
		char *dest = kernel_dereference_char_pointer(s, argv[2], 0);
		int size = argv[3].toUint16();
		debug(3, "K_FILEIO_READ_RAW(%d,%d)", handle, size);

		fread_wrapper(s, dest, size, handle);
		break;
	}
	case K_FILEIO_WRITE_RAW : {
		int handle = argv[1].toUint16();
		char *buf = kernel_dereference_char_pointer(s, argv[2], 0);
		int size = argv[3].toUint16();
		debug(3, "K_FILEIO_WRITE_RAW(%d,%d)", handle, size);

		fwrite_wrapper(s, handle, buf, size);
		break;
	}
	case K_FILEIO_UNLINK : {
		char *name = kernel_dereference_char_pointer(s, argv[1], 0);
		debug(3, "K_FILEIO_UNLINK(%s)", name);

		Common::SaveFileManager *saveFileMan = g_engine->getSaveFileManager();
		const Common::String wrappedName = ((Sci::SciEngine*)g_engine)->wrapFilename(name);
		saveFileMan->removeSavefile(wrappedName);
		// TODO/FIXME: Should we return something (like, a bool indicating
		// whether deleting the save succeeded or failed)?
		break;
	}
	case K_FILEIO_READ_STRING : {
		char *dest = kernel_dereference_char_pointer(s, argv[1], 0);
		int size = argv[2].toUint16();
		int handle = argv[3].toUint16();
		debug(3, "K_FILEIO_READ_STRING(%d,%d)", handle, size);

		fgets_wrapper(s, dest, size, handle);
		return argv[1];
	}
	case K_FILEIO_WRITE_STRING : {
		int handle = argv[1].toUint16();
		int size = argv[3].toUint16();
		char *buf = kernel_dereference_char_pointer(s, argv[2], size);
		debug(3, "K_FILEIO_WRITE_STRING(%d,%d)", handle, size);

		// FIXME: What is the difference between K_FILEIO_WRITE_STRING and
		// K_FILEIO_WRITE_RAW? Normally, I would expect the difference to
		// be that the former doesn't receive a 'size' parameter. But here
		// it does. Are we missing something?
		if (buf)
			fwrite_wrapper(s, handle, buf, size);
		break;
	}
	case K_FILEIO_SEEK : {
		int handle = argv[1].toUint16();
		int offset = argv[2].toUint16();
		int whence = argv[3].toUint16();
		debug(3, "K_FILEIO_SEEK(%d,%d,%d)", handle, offset, whence);

		fseek_wrapper(s, handle, offset, whence);
		break;
	}
	case K_FILEIO_FIND_FIRST : {
		char *mask = kernel_dereference_char_pointer(s, argv[1], 0);
		reg_t buf = argv[2];
		int attr = argv[3].toUint16(); // We won't use this, Win32 might, though...
		debug(3, "K_FILEIO_FIND_FIRST(%s,0x%x)", mask, attr);

#ifndef WIN32
		if (strcmp(mask, "*.*") == 0)
			strcpy(mask, "*"); // For UNIX
#endif
		s->_dirseeker.firstFile(mask, buf);

		break;
	}
	case K_FILEIO_FIND_NEXT : {
		debug(3, "K_FILEIO_FIND_NEXT()");
		s->_dirseeker.nextFile();
		break;
	}
	case K_FILEIO_FILE_EXISTS : {
		char *name = kernel_dereference_char_pointer(s, argv[1], 0);

		// Check for regular file
		bool exists = Common::File::exists(name);

		if (!exists) {
			// TODO: Transform the name given by the scripts to us, e.g. by
			// prepending TARGET-
			Common::SaveFileManager *saveFileMan = g_engine->getSaveFileManager();
			exists = !saveFileMan->listSavefiles(name).empty();
		}

		debug(3, "K_FILEIO_FILE_EXISTS(%s) -> %d", name, exists);
		return make_reg(0, exists);
	}
	default :
		error("Unknown FileIO() sub-command: %d", func_nr);
	}

	return s->r_acc;
}