aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/cmd_writes.c
blob: 6b0d472be5b8feb3bddbcf52ea6ef564c0eeff25 (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
#include <string.h>

#include "buf.h"
#include "core.h"

#include "libcmd/cmd.h"
#include "libcmd/cmd_parse.h"

extern file_t *g_file;
extern buf_t *g_buf;
extern int g_flags;

//white spaces should be supported
int c_writes( cmd_arg_t *arg )
{
	int argc = arg->argc;
	char **argv = arg->argv;
	int fret = 0;

	if ( argc != 1)
	{
		printf("Need one argument mister\n");
		return -1;
	}

	if (((g_buf == NULL) || (g_file == NULL)) || (g_buf->buf == NULL))
	{
		printf("Buffer or file not initialised");
		return -1;
	}

	if ( strlen(argv[0]) <= g_buf->size )
	{
		memcpy( g_buf->buf, argv[0], strlen(argv[0]) );
		fret = file_write_blk( g_file, g_buf->buf );
		if ( fret < 0 )
		{
			printf("Couldnt write block to file\n");
			return -1;
		}
	} else
	{
		printf("Input bigger then buffer buf %d input %zu\n", g_buf->size, strlen(argv[0]));
		return -1;
	}

	return 0;
}