mirror of
https://github.com/dvorka/hstr.git
synced 2025-01-04 14:12:01 +08:00
Clean solution to strdup() not being in ISO C.
This commit is contained in:
parent
0ac76a6554
commit
37f684216a
5 changed files with 21 additions and 9 deletions
6
dist/ubuntu-env.sh
vendored
6
dist/ubuntu-env.sh
vendored
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
export HHVERSION="1.9.1"
|
export HHVERSION="1.9.10"
|
||||||
export HHFULLVERSION=${HHVERSION}-0ubuntu1
|
export HHFULLVERSION=${HHVERSION}-0ubuntu1
|
||||||
export HH=hh_${HHVERSION}
|
export HH=hh_${HHVERSION}
|
||||||
export HHRELEASE=hh_${HHFULLVERSION}
|
export HHRELEASE=hh_${HHFULLVERSION}
|
||||||
|
@ -9,10 +9,10 @@ export NOW=`date +%Y-%m-%d--%H-%M-%S`
|
||||||
export HHBUILD=hstr-${NOW}
|
export HHBUILD=hstr-${NOW}
|
||||||
|
|
||||||
## https://wiki.ubuntu.com/Releases
|
## https://wiki.ubuntu.com/Releases
|
||||||
export UBUNTUVERSION=precise
|
#export UBUNTUVERSION=precise
|
||||||
#export UBUNTUVERSION=quantal
|
#export UBUNTUVERSION=quantal
|
||||||
#export UBUNTUVERSION=saucy
|
#export UBUNTUVERSION=saucy
|
||||||
#export UBUNTUVERSION=trusty
|
export UBUNTUVERSION=trusty
|
||||||
|
|
||||||
export HHBZRMSG="Favorites - favorite commands can be bookmarked and shown in a new view!"
|
export HHBZRMSG="Favorites - favorite commands can be bookmarked and shown in a new view!"
|
||||||
|
|
||||||
|
|
|
@ -11,12 +11,12 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "include/hstr_favorites.h"
|
#include "include/hstr_favorites.h"
|
||||||
|
#include "include/hstr_utils.h"
|
||||||
|
|
||||||
#define FAVORITE_SEGMENT_SIZE 10
|
#define FAVORITE_SEGMENT_SIZE 10
|
||||||
|
|
||||||
extern char *strdup(const char *s);
|
|
||||||
|
|
||||||
void favorites_init(FavoriteItems *favorites)
|
void favorites_init(FavoriteItems *favorites)
|
||||||
{
|
{
|
||||||
favorites->items=NULL;
|
favorites->items=NULL;
|
||||||
|
@ -68,7 +68,7 @@ void favorites_get(FavoriteItems *favorites)
|
||||||
while(pe!=NULL) {
|
while(pe!=NULL) {
|
||||||
favorites->items[i]=pb;
|
favorites->items[i]=pb;
|
||||||
*pe=0;
|
*pe=0;
|
||||||
favorites->items[i]=(char *)strdup(pb);
|
favorites->items[i]=hstr_strdup(pb);
|
||||||
pb=pe+1;
|
pb=pe+1;
|
||||||
pe=strchr(pb, '\n');
|
pe=strchr(pb, '\n');
|
||||||
i++;
|
i++;
|
||||||
|
@ -115,11 +115,11 @@ void favorites_add(FavoriteItems *favorites, char *newFavorite)
|
||||||
{
|
{
|
||||||
if(favorites->count) {
|
if(favorites->count) {
|
||||||
favorites->items=realloc(favorites->items, sizeof(char *) * ++favorites->count);
|
favorites->items=realloc(favorites->items, sizeof(char *) * ++favorites->count);
|
||||||
favorites->items[favorites->count-1]=strdup(newFavorite);
|
favorites->items[favorites->count-1]=hstr_strdup(newFavorite);
|
||||||
favorites_choose(favorites, newFavorite);
|
favorites_choose(favorites, newFavorite);
|
||||||
} else {
|
} else {
|
||||||
favorites->items=malloc(sizeof(char*));
|
favorites->items=malloc(sizeof(char*));
|
||||||
favorites->items[0]=strdup(newFavorite);
|
favorites->items[0]=hstr_strdup(newFavorite);
|
||||||
favorites->count=1;
|
favorites->count=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,11 +8,21 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "include/hstr_utils.h"
|
#include "include/hstr_utils.h"
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#define DEFAULT_COMMAND "pwd"
|
#define DEFAULT_COMMAND "pwd"
|
||||||
#define PROC_HOSTNAME "/proc/sys/kernel/hostname"
|
#define PROC_HOSTNAME "/proc/sys/kernel/hostname"
|
||||||
|
|
||||||
|
// strdup() not in ISO C
|
||||||
|
char *hstr_strdup(const char * s)
|
||||||
|
{
|
||||||
|
size_t len = 1+strlen(s);
|
||||||
|
char *p = malloc(len);
|
||||||
|
|
||||||
|
return p ? memcpy(p, s, len) : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void tiocsti()
|
void tiocsti()
|
||||||
{
|
{
|
||||||
char buf[] = DEFAULT_COMMAND;
|
char buf[] = DEFAULT_COMMAND;
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#define MIN(a,b) (((a)<(b))?(a):(b))
|
#define MIN(a,b) (((a)<(b))?(a):(b))
|
||||||
#define MAX(a,b) (((a)>(b))?(a):(b))
|
#define MAX(a,b) (((a)>(b))?(a):(b))
|
||||||
|
|
||||||
|
char *hstr_strdup(const char * s);
|
||||||
void tiocsti();
|
void tiocsti();
|
||||||
void fill_terminal_input(char* cmd, bool padding);
|
void fill_terminal_input(char* cmd, bool padding);
|
||||||
void reverse_char_pointer_array(char **array, unsigned length);
|
void reverse_char_pointer_array(char **array, unsigned length);
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../src/include/hashset.h"
|
#include "../src/include/hashset.h"
|
||||||
|
#include "../src/include/hstr_utils.h"
|
||||||
|
|
||||||
void testBlacklist() {
|
void testBlacklist() {
|
||||||
const char* commandBlacklist[] = { };
|
const char* commandBlacklist[] = { };
|
||||||
|
@ -19,7 +20,7 @@ void testBlacklist() {
|
||||||
}
|
}
|
||||||
for (i = 0; i < 5; i++) {
|
for (i = 0; i < 5; i++) {
|
||||||
printf("match %d\n",
|
printf("match %d\n",
|
||||||
hashset_contains(&blacklist, strdup(commandBlacklist[i])));
|
hashset_contains(&blacklist, hstr_strdup(commandBlacklist[i])));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue