FOSSology  4.4.0
Open Source License Compliance by Open Source Software
common.c
1 /*
2  Author: Daniele Fognini, Andreas Wuerl
3  SPDX-FileCopyrightText: © 2013-2014 Siemens AG
4 
5  SPDX-License-Identifier: GPL-2.0-only
6 */
7 
8 #include <glib.h>
9 #include "monk.h"
10 #include "common.h"
11 #include <libfossology.h>
12 
13 void scheduler_disconnect(MonkState* state, int exitval) {
14  fo_dbManager_finish(state->dbManager);
15  fo_scheduler_disconnect(exitval);
16 }
17 
18 void bail(MonkState* state, int exitval) {
19  if(state->dbManager != NULL) {
20  scheduler_disconnect(state, exitval);
21  }
22  exit(exitval);
23 }
24 
25 void queryAgentId(MonkState* state, const char* agentName, const char* agentDesc) {
26  char* commitHash = fo_sysconfig(agentName, "COMMIT_HASH");
27  char* version = fo_sysconfig(agentName, "VERSION");
28  gchar* agentRevision = g_strdup_printf("%s.%s", version, commitHash);
29 
30  int agentId = fo_GetAgentKey(fo_dbManager_getWrappedConnection(state->dbManager),
31  agentName, 0, agentRevision, agentDesc);
32  g_free(agentRevision);
33 
34  if (agentId > 0)
35  state->agentId = agentId;
36  else
37  bail(state, 1);
38 }
int queryAgentId(PGconn *dbConn)
Get agent id, exit if agent id is incorrect.
void bail(int exitval)
Disconnect with scheduler returning an error code and exit.
FUNCTION int fo_GetAgentKey(PGconn *pgConn, const char *agent_name, long Upload_pk, const char *rev, const char *agent_desc)
Get the latest enabled agent key (agent_pk) from the database.
Definition: libfossagent.c:158
The main FOSSology C library.
void fo_scheduler_disconnect(int retcode)
Disconnect the scheduler connection.
char * fo_sysconfig(const char *sectionname, const char *variablename)
gets a system configuration variable from the configuration data.
Definition: monk.h:44