aboutsummaryrefslogtreecommitdiffstats
path: root/src/l2su.h
blob: 518f1eef5703f9fee73067beaca804bd43e3d16f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#ifndef L2SU_MAIN_H_INCLUDED
#define L2SU_MAIN_H_INCLUDED

#include "command.h"
#include "digest/digest.h"
#include "instance.h"
#include "version.h"

#include <fcntl.h>
#include <time.h>
#include <curl/curl.h>
#include <stdio.h>

struct l2_user_paths {
  const char *config;
  const char *data;
};

struct tag_l2_state_t {
  struct l2_user_paths paths;

  /* eventually instances and other stuff will be stored in a hash table or something,
   * but for now a doubly-linked list accomplishes our goals */
  struct l2_instance *instance_head;
  struct l2_instance *instance_tail;

  struct l2_version_remote *ver_remote_head;
  struct l2_version_remote *ver_remote_tail;
};

extern struct tag_l2_state_t l2_state;

/* homecooked string methods */
char *l2_launcher_strapp(char *target, const char *src);

/* launcher utilities */
char *l2_launcher_find_config_path(void);
char *l2_launcher_find_data_path(void);

int l2_launcher_open_config(const char *path, int flags, mode_t mode);

int l2_launcher_mkdir_parents(const char *path);

char *l2_launcher_parse_iso_time(const char *str, struct tm *ts);

struct l2_dlbuf {
  void *data;
  size_t size;
  size_t capacity;
};

void l2_launcher_download_init(struct l2_dlbuf *buf);
void *l2_launcher_download_finalize(struct l2_dlbuf *buf, size_t *psz);
void l2_launcher_download_cleanup(struct l2_dlbuf *buf);
//extern size_t (*const l2_dlcb)(char *, size_t, size_t, void *);
extern const curl_write_callback l2_dlcb;

CURLcode l2_launcher_download(CURL *cd, const char *url, void **odata, size_t *osize);
int l2_json_merge_objects(json_t *j1, json_t *j2);

#endif /* include guard */