Compare commits

...

3 Commits
v3.22 ... v3.23

Author SHA1 Message Date
Devaev Maxim
74bf710bb6 Bump version: 3.22 → 3.23 2021-03-26 22:03:40 +03:00
Devaev Maxim
1d3b428a75 using asprintf 2021-03-25 14:23:43 +03:00
Devaev Maxim
749bc5caf7 const 2021-03-25 13:35:56 +03:00
13 changed files with 18 additions and 27 deletions

View File

@@ -1,7 +1,7 @@
[bumpversion] [bumpversion]
commit = True commit = True
tag = True tag = True
current_version = 3.22 current_version = 3.23
parse = (?P<major>\d+)\.(?P<minor>\d+)(\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?)? parse = (?P<major>\d+)\.(?P<minor>\d+)(\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?)?
serialize = serialize =
{major}.{minor} {major}.{minor}

View File

@@ -1,6 +1,6 @@
.\" Manpage for ustreamer-dump. .\" Manpage for ustreamer-dump.
.\" Open an issue or pull request to https://github.com/pikvm/ustreamer to correct errors or typos .\" Open an issue or pull request to https://github.com/pikvm/ustreamer to correct errors or typos
.TH USTREAMER-DUMP 1 "version 3.22" "January 2021" .TH USTREAMER-DUMP 1 "version 3.23" "January 2021"
.SH NAME .SH NAME
ustreamer-dump \- Dump uStreamer's memory sink to file ustreamer-dump \- Dump uStreamer's memory sink to file

View File

@@ -1,6 +1,6 @@
.\" Manpage for ustreamer. .\" Manpage for ustreamer.
.\" Open an issue or pull request to https://github.com/pikvm/ustreamer to correct errors or typos .\" Open an issue or pull request to https://github.com/pikvm/ustreamer to correct errors or typos
.TH USTREAMER 1 "version 3.22" "November 2020" .TH USTREAMER 1 "version 3.23" "November 2020"
.SH NAME .SH NAME
ustreamer \- stream MJPG video from any V4L2 device to the network ustreamer \- stream MJPG video from any V4L2 device to the network

View File

@@ -3,7 +3,7 @@
pkgname=ustreamer pkgname=ustreamer
pkgver=3.22 pkgver=3.23
pkgrel=1 pkgrel=1
pkgdesc="Lightweight and fast MJPG-HTTP streamer" pkgdesc="Lightweight and fast MJPG-HTTP streamer"
url="https://github.com/pikvm/ustreamer" url="https://github.com/pikvm/ustreamer"

View File

@@ -6,7 +6,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=ustreamer PKG_NAME:=ustreamer
PKG_VERSION:=3.22 PKG_VERSION:=3.23
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_MAINTAINER:=Maxim Devaev <mdevaev@gmail.com> PKG_MAINTAINER:=Maxim Devaev <mdevaev@gmail.com>

View File

@@ -6,7 +6,7 @@ from distutils.core import setup
if __name__ == "__main__": if __name__ == "__main__":
setup( setup(
name="ustreamer", name="ustreamer",
version="3.22", version="3.23",
description="uStreamer tools", description="uStreamer tools",
author="Maxim Devaev", author="Maxim Devaev",
author_email="mdevaev@gmail.com", author_email="mdevaev@gmail.com",

View File

@@ -23,5 +23,5 @@
#pragma once #pragma once
#ifndef VERSION #ifndef VERSION
# define VERSION "3.22" # define VERSION "3.23"
#endif #endif

View File

@@ -39,13 +39,15 @@
#define A_REALLOC(_dest, _nmemb) assert((_dest = realloc(_dest, _nmemb * sizeof(*(_dest))))) #define A_REALLOC(_dest, _nmemb) assert((_dest = realloc(_dest, _nmemb * sizeof(*(_dest)))))
#define MEMSET_ZERO(_obj) memset(&(_obj), 0, sizeof(_obj)) #define MEMSET_ZERO(_obj) memset(&(_obj), 0, sizeof(_obj))
#define A_ASPRINTF(_dest, _fmt, ...) assert(asprintf(&(_dest), _fmt, ##__VA_ARGS__) >= 0)
#define ARRAY_LEN(_array) (sizeof(_array) / sizeof(_array[0])) #define ARRAY_LEN(_array) (sizeof(_array) / sizeof(_array[0]))
#define INLINE inline __attribute__((always_inline)) #define INLINE inline __attribute__((always_inline))
#define UNUSED __attribute__((unused)) #define UNUSED __attribute__((unused))
INLINE char *bool_to_string(bool flag) { INLINE const char *bool_to_string(bool flag) {
return (flag ? "true" : "false"); return (flag ? "true" : "false");
} }

View File

@@ -217,9 +217,7 @@ static void *_worker_job_init(worker_s *wr, void *v_enc) {
A_CALLOC(job, 1); A_CALLOC(job, 1);
job->enc = (encoder_s *)v_enc; job->enc = (encoder_s *)v_enc;
const size_t dest_role_len = strlen(wr->name) + 16; A_ASPRINTF(job->dest_role, "%s_dest", wr->name);
A_CALLOC(job->dest_role, dest_role_len);
snprintf(job->dest_role, dest_role_len, "%s_dest", wr->name);
job->dest = frame_init(job->dest_role); job->dest = frame_init(job->dest_role);
return (void *)job; return (void *)job;

View File

@@ -102,8 +102,7 @@ static void _gpio_output_init(gpio_output_s *output) {
assert(gpio.chip); assert(gpio.chip);
assert(output->line == NULL); assert(output->line == NULL);
A_CALLOC(output->consumer, strlen(gpio.consumer_prefix) + strlen(output->role) + 16); A_ASPRINTF(output->consumer, "%s::%s", gpio.consumer_prefix, output->role);
sprintf(output->consumer, "%s::%s", gpio.consumer_prefix, output->role);
if (output->pin >= 0) { if (output->pin >= 0) {
if ((output->line = gpiod_chip_get_line(gpio.chip, output->pin)) != NULL) { if ((output->line = gpiod_chip_get_line(gpio.chip, output->pin)) != NULL) {

View File

@@ -145,16 +145,14 @@ int server_listen(server_s *server) {
evhttp_set_timeout(RUN(http), server->timeout); evhttp_set_timeout(RUN(http), server->timeout);
if (server->user[0] != '\0') { if (server->user[0] != '\0') {
char *raw_token;
char *encoded_token = NULL; char *encoded_token = NULL;
A_CALLOC(raw_token, strlen(server->user) + strlen(server->passwd) + 16); char *raw_token;
sprintf(raw_token, "%s:%s", server->user, server->passwd); A_ASPRINTF(raw_token, "%s:%s", server->user, server->passwd);
base64_encode((uint8_t *)raw_token, strlen(raw_token), &encoded_token, NULL); base64_encode((uint8_t *)raw_token, strlen(raw_token), &encoded_token, NULL);
free(raw_token); free(raw_token);
A_CALLOC(RUN(auth_token), strlen(encoded_token) + 16); A_ASPRINTF(RUN(auth_token), "Basic %s", encoded_token);
sprintf(RUN(auth_token), "Basic %s", encoded_token);
free(encoded_token); free(encoded_token);
LOG_INFO("Using HTTP basic auth"); LOG_INFO("Using HTTP basic auth");
@@ -857,10 +855,7 @@ static char *_http_get_client_hostport(struct evhttp_request *request) {
} }
char *hostport; char *hostport;
size_t hostport_len = strlen(addr) + 64; A_ASPRINTF(hostport, "[%s]:%u", addr, port);
A_CALLOC(hostport, hostport_len);
snprintf(hostport, hostport_len, "[%s]:%u", addr, port);
free(addr); free(addr);
return hostport; return hostport;
} }

View File

@@ -32,7 +32,7 @@ char *find_static_file_path(const char *root_path, const char *request_path) {
goto error; goto error;
} }
A_CALLOC(path, strlen(root_path) + strlen(simplified_path) + 16); A_CALLOC(path, strlen(root_path) + strlen(simplified_path) + 16); // + reserved for /index.html
sprintf(path, "%s/%s", root_path, simplified_path); sprintf(path, "%s/%s", root_path, simplified_path);
struct stat st; struct stat st;

View File

@@ -49,14 +49,11 @@ workers_pool_s *workers_pool_init(
A_MUTEX_INIT(&pool->free_workers_mutex); A_MUTEX_INIT(&pool->free_workers_mutex);
A_COND_INIT(&pool->free_workers_cond); A_COND_INIT(&pool->free_workers_cond);
const size_t wr_name_len = strlen(wr_prefix) + 64;
for (unsigned number = 0; number < pool->n_workers; ++number) { for (unsigned number = 0; number < pool->n_workers; ++number) {
# define WR(_next) pool->workers[number]._next # define WR(_next) pool->workers[number]._next
WR(number) = number; WR(number) = number;
A_CALLOC(WR(name), wr_name_len); A_ASPRINTF(WR(name), "%s-%u", wr_prefix, number);
snprintf(WR(name), wr_name_len, "%s-%u", wr_prefix, number);
A_MUTEX_INIT(&WR(has_job_mutex)); A_MUTEX_INIT(&WR(has_job_mutex));
atomic_init(&WR(has_job), false); atomic_init(&WR(has_job), false);