int main(int argc, char **argv)
{
	int ret = 0;
	pkgmgr_installer *pi = pkgmgr_installer_new();

	_pi = pi;

	pkgmgr_installer_receive_request(pi, argc, argv);

	int req_type = pkgmgr_installer_get_request_type(pi);
	if (PKGMGR_REQ_INVALID >= req_type)
		return EINVAL;

	const char *pkg_info = pkgmgr_installer_get_request_info(pi);

	switch (req_type) {
	case PKGMGR_REQ_INSTALL:
		ret = __install_package(pkg_info);
		break;
	case PKGMGR_REQ_UNINSTALL:
		ret = __uninstall_package(pkg_info);
		break;
	case PKGMGR_REQ_CLEAR:
		ret = __clear_package(pkg_info);
		break;
	case PKGMGR_REQ_RECOVER:
		ret = __recover_package_system();
		break;
	default:
		ret = EINVAL;
	}

	return ret;
}
Ejemplo n.º 2
0
int
main (int argc, char **argv)
{
  int result;

  /* get request data */
  pi = pkgmgr_installer_new ();
  if (!pi)
    return ENOMEM;
  result = pkgmgr_installer_receive_request (pi, argc, argv);
  if (result)
    {
      pkgmgr_installer_free (pi);
      return -result;
    }

  /* treat the request */
  switch (pkgmgr_installer_get_request_type (pi))
    {
    case PKGMGR_REQ_INSTALL:
      result = install ();
      break;

    case PKGMGR_REQ_UNINSTALL:
      result = uninstall ();
      break;

    case PKGMGR_REQ_REINSTALL:
      result = reinstall ();
      break;

    case PKGMGR_REQ_MOVE:
      result = move ();
      break;

    case PKGMGR_REQ_CLEAR:
    case PKGMGR_REQ_RECOVER:
    case PKGMGR_REQ_GETSIZE:
    case PKGMGR_REQ_UPGRADE:
    case PKGMGR_REQ_SMACK:
    default:
      /* unsupported operation */
      result = EINVAL;
      break;
    }
  pkgmgr_installer_free (pi);
  return result;
}
int _ri_parse_cmdline(int argc, char **argv, ri_frontend_cmdline_arg *data)
{
	int req_cmd = INVALID_CMD;
	const char *pkg_name = NULL;
	int quiet = 0;
	const char *pkeyid = NULL;
	int ret = 0;
	pi = pkgmgr_installer_new();
	if (!pi) {
		_d_msg(DEBUG_ERR,
		       "Failure in creating the pkgmgr_installer object \n");
		return RPM_INSTALLER_ERR_WRONG_PARAM;
	}
	ret = pkgmgr_installer_receive_request(pi, argc, argv);
	if (ret) {
		_d_msg(DEBUG_ERR, "pkgmgr_installer_receive_request failed \n");
		return RPM_INSTALLER_ERR_WRONG_PARAM;
	}
	ret = pkgmgr_installer_get_request_type(pi);
	switch (ret) {
	case PKGMGR_REQ_INSTALL:
		req_cmd = INSTALL_CMD;
		break;
	case PKGMGR_REQ_UNINSTALL:
		req_cmd = DELETE_CMD;
		break;
	case PKGMGR_REQ_RECOVER:
		req_cmd = RECOVER_CMD;
		break;
	case PKGMGR_REQ_CLEAR:
		req_cmd = CLEARDATA_CMD;
		break;
	case PKGMGR_REQ_PERM:
		goto PARSEERROR;
	case PKGMGR_REQ_INVALID:
		req_cmd = INVALID_CMD;
		goto PARSEERROR;
	default:
		goto PARSEERROR;
	}
	if (req_cmd != RECOVER_CMD) {
		pkg_name = pkgmgr_installer_get_request_info(pi);
		if (!pkg_name) {
			_d_msg(DEBUG_ERR,
			       "pkgmgr_installer_get_request_info failed \n");
			return RPM_INSTALLER_ERR_WRONG_PARAM;
		}
		pkeyid = pkgmgr_installer_get_session_id(pi);
		if (!pkeyid) {
			_d_msg(DEBUG_ERR, "pkgmgr_installer_get_session_id failed \n");
			return RPM_INSTALLER_ERR_WRONG_PARAM;
		}

		quiet = pkgmgr_installer_is_quiet(pi);
		if (quiet != 0 && quiet != 1) {
			_d_msg(DEBUG_ERR, "pkgmgr_installer_is_quiet failed \n");
			return RPM_INSTALLER_ERR_WRONG_PARAM;
		}
	}
	if (req_cmd != INSTALL_CMD && req_cmd != DELETE_CMD
	    && req_cmd != RECOVER_CMD && req_cmd != CLEARDATA_CMD) {
		_d_msg(DEBUG_ERR, "invalid command \n");
		goto PARSEERROR;
	}

	data->req_cmd = req_cmd;
	data->pkg_name = (char *)pkg_name;
	data->quiet = quiet;
	data->keyid = (char *)pkeyid;
	return RPM_INSTALLER_SUCCESS;

 PARSEERROR:
	_d_msg(DEBUG_ERR, "Error in parsing input parameter\n");
	__ri_show_usage(argv);
	return RPM_INSTALLER_ERR_WRONG_PARAM;

}