/*
- * Copyright (C) 2013-2014 Thadeu Lima de Souza Cascardo <cascardo@minaslivre.org>
+ * Copyright (C) 2013-2017 Thadeu Lima de Souza Cascardo <cascardo@minaslivre.org>
* Copyright (C) 2014 Alexandre Oliva <lxoliva@fsfla.org>
*
* This program is free software; you can redistribute it and/or modify
#include "rnet_message.h"
#include "decfile.h"
-int rnet_encode(struct rnet_decfile *decfile, struct rnet_message **msg)
+int rnet_encode(struct rnet_decfile *decfile, struct rnet_message **msg, char *client)
{
int r = -EIO;
size_t header_size, header_head, header_tail;
+ if (client == NULL)
+ client = RNET_DEFAULT_VERSION;
+
*msg = rnet_message_new();
if (*msg == NULL) {
return -ENOMEM;
r = rnet_message_add_ascii(msg, "versao_java", "1.5.0-gij;Free Software rnetclient pretending to be GNU Interpreter for Java");
r = rnet_message_add_ascii(msg, "origem", "JA2R");
r = rnet_message_add_ascii(msg, "so", "GNU");
- r = rnet_message_add_ascii(msg, "cliente", "201704");
+ r = rnet_message_add_ascii(msg, "cliente", client);
r = rnet_message_add_buffer(msg, "dados_val",
header + header_head,
header_size - header_tail - header_head);
#include "rnet_message.h"
#include "decfile.h"
-int rnet_encode(struct rnet_decfile *decfile, struct rnet_message **msg);
+#define RNET_DEFAULT_VERSION "201704"
+
+int rnet_encode(struct rnet_decfile *decfile, struct rnet_message **msg, char *client);
#endif
"Tax Authority";
static const char rnetclient_args_doc[] =
"[-d|--declaration] FILE [-o|--output-dir DIRECTORY]"
- " [-s|--server-name SERVER]";
+ " [-s|--server-name SERVER]"
+ " [-c|--client-version CLIENT]";
#define RNET_ADDRESS "receitanet.receita.fazenda.gov.br"
"The server to connect to. Default is " RNET_ADDRESS ".",
0 },
+ { "client-version", 'c', "CLIENT", 0,
+ "The client version to be used.",
+ 0 },
+
{ NULL },
};
/* Server to connect to. */
char *server_name;
+
+ /* Client version to use. */
+ char *client_version;
};
/* Parser for command line arguments. */
a->server_name = arg;
break;
+ case 'c':
+ a->client_version = arg;
+ break;
+
case ARGP_KEY_ARG:
/* The user has possibly provided a filename without
using any switches (e.g., by running './rnetclient
state. */
memset(&rnet_args, 0, sizeof (rnet_args));
rnet_args.server_name = RNET_ADDRESS;
+ rnet_args.client_version = RNET_DEFAULT_VERSION;
err = argp_parse (&rnetclient_argp, argc, argv, 0, NULL, &rnet_args);
if (err != 0)
fprintf(stderr, "internal error while parsing command line arguments.");
goto out_handshake;
}
- r = rnet_encode(decfile, &message);
+ r = rnet_encode(decfile, &message, rnet_args.client_version);
if (r < 0) {
fprintf(stderr, "error encoding message, file not supported?\n");
r = 1;
return -1;
}
- r = rnet_encode(decfile, &message);
+ r = rnet_encode(decfile, &message, NULL);
if (r < 0) {
fprintf(stderr, "Error encoding message\n");
return -1;