update: new examples
This commit is contained in:
@ -1,11 +1,15 @@
|
||||
CC = gcc
|
||||
|
||||
all: ../dist/example_client ../dist/example_server
|
||||
all: ../dist/client_install ../dist/client_remove ../dist/server
|
||||
|
||||
../dist/example_client: client/*.c ../dist/libmp.so
|
||||
../dist/client_install: client/install.c client/*.h ../dist/libmp.so
|
||||
mkdir -pv ../dist
|
||||
$(CC) -L../dist $< -lmp -o $@
|
||||
|
||||
../dist/example_server: server/*.c ../dist/libmp.so
|
||||
../dist/client_remove: client/remove.c client/*.h ../dist/libmp.so
|
||||
mkdir -pv ../dist
|
||||
$(CC) -L../dist $< -lmp -o $@
|
||||
|
||||
../dist/server: server/*.c ../dist/libmp.so
|
||||
mkdir -pv ../dist
|
||||
$(CC) -L../dist $< -lmp -o $@
|
||||
|
4
examples/client/common.h
Normal file
4
examples/client/common.h
Normal file
@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
#define DATA_DIR "/tmp/data"
|
||||
#define TEMP_DIR "/tmp/temp"
|
||||
#define ROOT_DIR "/tmp/root"
|
@ -1,25 +1,22 @@
|
||||
#include "../../include/all.h"
|
||||
#include "./common.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define DATA_DIR "/tmp/data"
|
||||
#define TEMP_DIR "/tmp/temp"
|
||||
#define ROOT_DIR "/tmp/root"
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int ret = EXIT_FAILURE;
|
||||
lm_pkg_t *pkg = NULL;
|
||||
lm_ctx_t ctx;
|
||||
|
||||
if (argc != 2) {
|
||||
printf("usage: %s <pool url>\n", argv[0]);
|
||||
if (argc != 4) {
|
||||
printf("usage: %s <package name> <pool name> <pool url>\n", argv[0]);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (!mkdir_ifnot(ROOT_DIR)) {
|
||||
printf("failed to create root dir: %s", ROOT_DIR);
|
||||
printf("failed to create root dir: %s\n", ROOT_DIR);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -40,7 +37,7 @@ int main(int argc, char *argv[]) {
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (lm_ctx_pool_add(&ctx, "base", argv[1]) == NULL) {
|
||||
if (lm_ctx_pool_add(&ctx, argv[2], argv[3]) == NULL) {
|
||||
printf("failed to add pool: %s (%d)\n", lm_strerror(), lm_error());
|
||||
goto end;
|
||||
}
|
||||
@ -48,16 +45,20 @@ int main(int argc, char *argv[]) {
|
||||
lm_ctx_ping(&ctx, NULL, NULL);
|
||||
lm_ctx_sync(&ctx, true, NULL, NULL);
|
||||
|
||||
if ((pkg = lm_ctx_find(&ctx, "which", NULL)) == NULL) {
|
||||
if ((pkg = lm_ctx_pool_find(&ctx, argv[1], NULL)) == NULL) {
|
||||
printf("failed to find package: %s (%d)\n", lm_strerror(), lm_error());
|
||||
goto end;
|
||||
}
|
||||
|
||||
printf("downloading package: %s (%s)...\n", pkg->name, pkg->version);
|
||||
|
||||
if (!lm_ctx_download(&ctx, pkg, NULL, NULL)) {
|
||||
printf("failed to download package: %s (%d)\n", lm_strerror(), lm_error());
|
||||
goto end;
|
||||
}
|
||||
|
||||
printf("installing package: %s (%s)...\n", pkg->name, pkg->version);
|
||||
|
||||
if (!lm_ctx_install(&ctx, pkg, NULL, NULL)) {
|
||||
printf("failed to install the package: %s (%d)\n", lm_strerror(), lm_error());
|
||||
goto end;
|
55
examples/client/remove.c
Normal file
55
examples/client/remove.c
Normal file
@ -0,0 +1,55 @@
|
||||
#include "../../include/all.h"
|
||||
#include "./common.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int ret = EXIT_FAILURE;
|
||||
lm_pkg_t pkg;
|
||||
lm_ctx_t ctx;
|
||||
|
||||
if (argc != 2) {
|
||||
printf("usage: %s <package name>\n", argv[0]);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (!mkdir_ifnot(ROOT_DIR)) {
|
||||
printf("failed to create root dir: %s\n", ROOT_DIR);
|
||||
return ret;
|
||||
}
|
||||
|
||||
lm_ctx_init(&ctx);
|
||||
|
||||
if (!lm_ctx_set_data(&ctx, DATA_DIR)) {
|
||||
printf("failed to set data dir: %s (%d)\n", lm_strerror(), lm_error());
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (!lm_ctx_set_temp(&ctx, TEMP_DIR)) {
|
||||
printf("failed to set temp dir: %s (%d)\n", lm_strerror(), lm_error());
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (!lm_ctx_set_root(&ctx, ROOT_DIR)) {
|
||||
printf("failed to set root dir: %s (%d)\n", lm_strerror(), lm_error());
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (!lm_ctx_database_find(&ctx, &pkg, argv[1])) {
|
||||
printf("failed to find package: %s (%d)\n", lm_strerror(), lm_error());
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (!lm_ctx_remove(&ctx, &pkg, NULL, NULL)) {
|
||||
printf("failed to remove package: %s (%d)\n", lm_strerror(), lm_error());
|
||||
goto end;
|
||||
}
|
||||
|
||||
ret = EXIT_SUCCESS;
|
||||
|
||||
end:
|
||||
lm_ctx_free(&ctx);
|
||||
return ret;
|
||||
}
|
Reference in New Issue
Block a user