Fixed std::out_of_range error
This commit is contained in:
parent
ca0105a800
commit
e987ef0159
|
@ -1,3 +1,7 @@
|
||||||
2015-07-16 R. Eric Wheeler <eric@rewiv.com> Version 1.2.0
|
2015-07-16 R. Eric Wheeler <eric@rewiv.com> Version 1.2.0
|
||||||
|
|
||||||
* Initial Release
|
* Initial Release
|
||||||
|
|
||||||
|
2015-07-17 R. Eric Wheeler <eric@rewiv.com> Version 1.2.1
|
||||||
|
|
||||||
|
* Fixed std::out_of_range error when --disable-pipe-stripping is enabled
|
||||||
|
|
|
@ -66,12 +66,12 @@ AM_COND_IF([PC_REMOVE_INVALID],
|
||||||
|
|
||||||
AC_ARG_ENABLE([debug],
|
AC_ARG_ENABLE([debug],
|
||||||
[AC_HELP_STRING([--enable-debug], [enable debuging [default=no]])],
|
[AC_HELP_STRING([--enable-debug], [enable debuging [default=no]])],
|
||||||
[], [enable_debug=no])
|
[enable_debug=no], [enable_debug=yes])
|
||||||
AM_CONDITIONAL([PC_DEBUG], [test "x$enable_debug" = "xno"])
|
AM_CONDITIONAL([PC_DEBUG], [test "x$enable_debug" = "xno"])
|
||||||
|
|
||||||
AM_COND_IF([PC_DEBUG],
|
AM_COND_IF([PC_DEBUG],
|
||||||
[],
|
[AC_MSG_NOTICE([Debugging enabled.])],
|
||||||
[AC_MSG_NOTICE([Debugging enabled.])])
|
[])
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile src/Makefile man/Makefile src/libpipecolors.pc:src/libpipecolors.pc.in src/libpipecolors.h:src/libpipecolors.h.in],[],[APIVERSION=PIPECOLORS_VERSION])
|
AC_CONFIG_FILES([Makefile src/Makefile man/Makefile src/libpipecolors.pc:src/libpipecolors.pc.in src/libpipecolors.h:src/libpipecolors.h.in],[],[APIVERSION=PIPECOLORS_VERSION])
|
||||||
AC_CONFIG_COMMANDS([timestamp], [date >timestamp])
|
AC_CONFIG_COMMANDS([timestamp], [date >timestamp])
|
||||||
|
|
|
@ -7,14 +7,15 @@ LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||||
|
|
||||||
lib_LTLIBRARIES = libpipecolors.la
|
lib_LTLIBRARIES = libpipecolors.la
|
||||||
libpipecolors_la_SOURCES = libpipecolors.cc
|
libpipecolors_la_SOURCES = libpipecolors.cc
|
||||||
#libpipecolors_la_LIBS = -lboost_regex
|
|
||||||
libpipecolors_la_CFLAGS = -fPIC -DPIC -pthread
|
libpipecolors_la_CFLAGS = -fPIC -DPIC -pthread
|
||||||
|
|
||||||
if PC_REMOVE_INVALID
|
if PC_REMOVE_INVALID
|
||||||
AM_CPPFLAGSINVALID = -DPC_REMOVE_INVALID
|
AM_CPPFLAGSINVALID = -DPC_REMOVE_INVALID
|
||||||
endif
|
endif
|
||||||
|
if PC_DEBUG
|
||||||
AM_CPPFLAGS = $(AM_CPPFLAGSINVALID)
|
AM_CPPFLAGSDEBUG = -DPC_DEBUG
|
||||||
|
endif
|
||||||
|
AM_CPPFLAGS = $(AM_CPPFLAGSINVALID) $(AM_CPPFLAGSDEBUG)
|
||||||
|
|
||||||
libpipecolors_la_LDFLAGS = -module \
|
libpipecolors_la_LDFLAGS = -module \
|
||||||
-release ${PIPECOLORS_VERSION}
|
-release ${PIPECOLORS_VERSION}
|
||||||
|
|
|
@ -22,6 +22,9 @@
|
||||||
#ifndef PC_REMOVE_INVALID
|
#ifndef PC_REMOVE_INVALID
|
||||||
#define PC_REMOVE_INVALID false
|
#define PC_REMOVE_INVALID false
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef PC_DEBUG
|
||||||
|
#define PC_DEBUG false
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
@ -31,6 +34,7 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include "pipecolors.h"
|
#include "pipecolors.h"
|
||||||
|
|
||||||
|
|
||||||
namespace pipecolors {
|
namespace pipecolors {
|
||||||
|
|
||||||
const char * ansi(std::string code) {
|
const char * ansi(std::string code) {
|
||||||
|
@ -85,23 +89,26 @@ namespace pipecolors {
|
||||||
void removePipe(std::pair<std::string,std::string> &str, std::string pipe) {
|
void removePipe(std::pair<std::string,std::string> &str, std::string pipe) {
|
||||||
|
|
||||||
size_t index = 0;
|
size_t index = 0;
|
||||||
|
int strlen = 0;
|
||||||
while( ( index = str.first.find(pipe, index) ) != std::string::npos ) {
|
while( ( index = str.first.find(pipe, index) ) != std::string::npos ) {
|
||||||
|
|
||||||
str.second.erase(str.second.find(pipe), pipe.length());
|
str.second.erase(str.second.find(pipe), pipe.length());
|
||||||
|
|
||||||
if(ansi(pipe) == "nocode" && PC_REMOVE_INVALID == false) goto skip;
|
if(ansi(pipe) == "nocode" && PC_REMOVE_INVALID == false) strlen += 3;
|
||||||
|
|
||||||
|
|
||||||
if(has_colors() && ansi(pipe) != "nocode") {
|
if(has_colors() && ansi(pipe) != "nocode") {
|
||||||
str.first.replace(index, pipe.length(), ansi(pipe) );
|
str.first.replace(index, pipe.length(), ansi(pipe) );
|
||||||
} else {
|
} else if(has_colors() && ansi(pipe) == "nocode" && PC_REMOVE_INVALID == true) {
|
||||||
str.first.erase(index, pipe.length());
|
str.first.erase(index, pipe.length());
|
||||||
|
} else {
|
||||||
|
index += 3;
|
||||||
|
goto skip;
|
||||||
}
|
}
|
||||||
|
|
||||||
skip:;
|
skip:;
|
||||||
index += std::string::npos;
|
index += std::string::npos;
|
||||||
}
|
}
|
||||||
|
if(strlen > 0) str.second.insert(str.second.end(), strlen, '\0');
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<std::string,int> replace_colors( std::string s ) {
|
std::pair<std::string,int> replace_colors( std::string s ) {
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
#include <cstdio>
|
||||||
|
#include <iostream>
|
||||||
|
#include <pipecolors.h>
|
||||||
|
#include <climits>
|
||||||
|
#include <cstring>
|
||||||
|
#include <cstdarg>
|
||||||
|
#include <vector>
|
||||||
|
using namespace pipecolors;
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
void usage() {
|
||||||
|
pcprintf("|10|30 * |15|30pcprintf|39: |12|30usage|39: |15pcprintf |03\"|11|30string|03\"|39\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void bprintf(const char * format, ... ) {
|
||||||
|
|
||||||
|
|
||||||
|
char * buf;
|
||||||
|
|
||||||
|
va_list args;
|
||||||
|
va_start(args, format);
|
||||||
|
vprintf(format, args);
|
||||||
|
va_end(args);
|
||||||
|
//pcprintf(buf);
|
||||||
|
//delete[] buf;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ssvprintf(const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list args, rag;
|
||||||
|
va_start(args,fmt);
|
||||||
|
va_copy(rag, args);
|
||||||
|
va_end(args);
|
||||||
|
char * val = va_arg(rag, char*);
|
||||||
|
printf(fmt, val );
|
||||||
|
|
||||||
|
|
||||||
|
va_end(rag);
|
||||||
|
|
||||||
|
}
|
||||||
|
int
|
||||||
|
g (const char *a, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start (ap, a);
|
||||||
|
va_arg (ap, char*);
|
||||||
|
if (va_arg (ap, int) != 1234)
|
||||||
|
std::cout << "Hello" << std::endl;
|
||||||
|
|
||||||
|
va_end (ap);
|
||||||
|
}
|
||||||
|
int main( int argc, char * argv[] ) {
|
||||||
|
|
||||||
|
|
||||||
|
if(argc <= 1 || argc > 2) {
|
||||||
|
usage();
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
pcprintf(argv[1],argv[2]);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue