diff -Nru fladduser-0.2.0ubuntu2/CMakeLists.txt fladduser-0.2.0ubuntu2/CMakeLists.txt --- fladduser-0.2.0ubuntu2/CMakeLists.txt 2016-11-24 14:26:04.000000000 +0000 +++ fladduser-0.2.0ubuntu2/CMakeLists.txt 2016-12-14 01:16:21.000000000 +0000 @@ -1,6 +1,9 @@ cmake_minimum_required(VERSION 2.8) project(flAdduser CXX C) set(PROJECT_NAME flAdduser) +if ( ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR} ) + message( FATAL_ERROR "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there. You may need to remove CMakeCache.txt." ) +endif() FIND_PACKAGE(FLTK REQUIRED NO_MODULE) FIND_PACKAGE(X11 REQUIRED) INCLUDE(AddFileDependencies) @@ -31,8 +34,9 @@ set(CMAKE_BUILD_TYPE "RELEASE") set(CMAKE_CONFIGURATION_TYPE "RELEASE") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os -finline-small-functions -finline-functions-called-once -fno-unwind-tables -fno-asynchronous-unwind-tables") -INCLUDE_DIRECTORIES("${FLTK_INCLUDE_DIR}" "${X11_INCLUDE_DIR}" "${flAdduser_BINARY_DIR}" "${flAdduser_SOURCE_DIR}") +INCLUDE_DIRECTORIES("${FLTK_INCLUDE_DIR}" "${X11_INCLUDE_DIR}" "${flAdduser_BINARY_DIR}" "${flAdduser_SOURCE_DIR}""${CMAKE_BINARY_DIR}/src" "${CMAKE_BINARY_DIR}/include") +add_library(flAdduser STATIC src/common.cpp) add_executable(fladduser src/flAdduser.cxx) -TARGET_LINK_LIBRARIES(fladduser fltk_SHARED fltk_images_SHARED "${X11_LIBRARIES}" ) +TARGET_LINK_LIBRARIES(fladduser fltk_SHARED fltk_images_SHARED "${X11_LIBRARIES}" flAdduser) install(TARGETS fladduser RUNTIME DESTINATION bin ) diff -Nru fladduser-0.2.0ubuntu2/debian/bzr-builder.manifest fladduser-0.2.0ubuntu2/debian/bzr-builder.manifest --- fladduser-0.2.0ubuntu2/debian/bzr-builder.manifest 2016-11-24 14:26:04.000000000 +0000 +++ fladduser-0.2.0ubuntu2/debian/bzr-builder.manifest 2016-12-14 01:16:22.000000000 +0000 @@ -1,2 +1,2 @@ -# bzr-builder format 0.3 deb-version {debupstream}-23 -lp:fladduser revid:israeldahl@gmail.com-20161115230641-26k8ln7nlfk6oc7o +# bzr-builder format 0.3 deb-version {debupstream}-25 +lp:fladduser revid:israeldahl@gmail.com-20161213200727-d67ibxy2v82wvgw2 diff -Nru fladduser-0.2.0ubuntu2/debian/changelog fladduser-0.2.0ubuntu2/debian/changelog --- fladduser-0.2.0ubuntu2/debian/changelog 2016-11-24 14:26:04.000000000 +0000 +++ fladduser-0.2.0ubuntu2/debian/changelog 2016-12-14 01:16:22.000000000 +0000 @@ -1,8 +1,8 @@ -fladduser (0.2.0ubuntu2-23~ubuntu14.04.1) trusty; urgency=low +fladduser (0.2.0ubuntu2-25~ubuntu14.04.1) trusty; urgency=low * Auto build. - -- Israel Dahl Thu, 24 Nov 2016 14:26:04 +0000 + -- Israel Dahl Wed, 14 Dec 2016 01:16:22 +0000 fladduser (0.2.0ubuntu2) UNRELEASED; urgency=medium * debian/ diff -Nru fladduser-0.2.0ubuntu2/fladduser.project fladduser-0.2.0ubuntu2/fladduser.project --- fladduser-0.2.0ubuntu2/fladduser.project 1970-01-01 00:00:00.000000000 +0000 +++ fladduser-0.2.0ubuntu2/fladduser.project 2016-12-14 01:16:21.000000000 +0000 @@ -0,0 +1,32 @@ +[editor] +line_wrapping=false +line_break_column=72 +auto_continue_multiline=true + +[file_prefs] +final_new_line=true +ensure_convert_new_lines=false +strip_trailing_spaces=false +replace_tabs=false + +[indentation] +indent_width=4 +indent_type=1 +indent_hard_tab_width=8 +detect_indent=false +detect_indent_width=false +indent_mode=2 + +[project] +name=fladduser +base_path=/home/israeldahl/bzr/fladduser/ +description= + +[long line marker] +long_line_behaviour=1 +long_line_column=72 + +[files] +current_page=1 +FILE_NAME_0=5841;C++;0;EUTF-8;1;1;0;%2Fhome%2Fisraeldahl%2Fbzr%2Ffladduser%2Finclude%2Fcommon.hpp;0;4 +FILE_NAME_1=49661;C++;0;EUTF-8;1;1;0;%2Fhome%2Fisraeldahl%2Fbzr%2Ffladduser%2Fsrc%2Fcommon.cpp;0;4 Binary files /tmp/tmpynf3q6/Mgod92CBlv/fladduser-0.2.0ubuntu2/icon/flAdduser.png and /tmp/tmpynf3q6/OJ3k38BdZz/fladduser-0.2.0ubuntu2/icon/flAdduser.png differ diff -Nru fladduser-0.2.0ubuntu2/icon/flAdduser.svg fladduser-0.2.0ubuntu2/icon/flAdduser.svg --- fladduser-0.2.0ubuntu2/icon/flAdduser.svg 2016-11-24 14:26:04.000000000 +0000 +++ fladduser-0.2.0ubuntu2/icon/flAdduser.svg 2016-12-14 01:16:21.000000000 +0000 @@ -7,100 +7,20 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="12.559731mm" - height="13.546667mm" - viewBox="0 0 44.502986 48.000001" + width="48" + height="48" + viewBox="0 0 48.000006 47.999998" id="svg2" version="1.1" - inkscape:version="0.91 r" - sodipodi:docname="flAdduser.svg"> + inkscape:version="0.91 r13725" + sodipodi:docname="flAdduser.svg" + inkscape:export-filename="/home/israeldahl/bzr/fladduser/icon/flAdduser.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> - - - - - - - - - - - - - - - - - - - - + id="defs4" /> + inkscape:window-width="1366" + inkscape:window-height="714" + inkscape:window-x="0" + inkscape:window-y="34" + inkscape:window-maximized="1" + units="px" /> @@ -139,90 +60,51 @@ inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" - transform="translate(-32.51479,-842.54791)"> + transform="translate(-32.406261,-838.59347)"> + id="g4282" + transform="matrix(1.139425,0,0,1.084645,-5.5355861,-76.014165)"> - - - + transform="translate(1.2500001,0.17857144)" + style="fill:#c08059;fill-opacity:1" + id="g4260"> + style="fill:#c08059;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 58.77316,859.43072 c -1.518613,0.72459 -3.113578,1.94024 -4.751953,3.84766 l 0,20.54101 17.126953,0 -0.107422,-20.54101 c 0,0 -1.810875,-2.42137 -4.6875,-3.79883 a 5.9382878,7.0329395 0 0 1 -3.761718,1.59961 5.9382878,7.0329395 0 0 1 -3.81836,-1.64844 z" + id="path4140-8" /> - + ry="7.0329399" + rx="5.9382882" + cy="852.61682" + cx="62.584682" + id="ellipse4250" + style="opacity:1;fill:#c08059;fill-opacity:1;stroke:none;stroke-width:1.29999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + transform="translate(-18.57143,0.35714288)" + id="g4276" + style="fill:#c08059;fill-opacity:1"> - + id="path4278" + d="m 58.77316,859.43072 c -1.518613,0.72459 -3.113578,1.94024 -4.751953,3.84766 l 0,20.54101 17.126953,0 -0.107422,-20.54101 c 0,0 -1.810875,-2.42137 -4.6875,-3.79883 a 5.9382878,7.0329395 0 0 1 -3.761718,1.59961 5.9382878,7.0329395 0 0 1 -3.81836,-1.64844 z" + style="fill:#c08059;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:connector-curvature="0" /> + style="opacity:1;fill:#c08059;fill-opacity:1;stroke:none;stroke-width:1.29999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="ellipse4280" + cx="62.584682" + cy="852.61682" + rx="5.9382882" + ry="7.0329399" /> diff -Nru fladduser-0.2.0ubuntu2/icon/flAdduser.xpm fladduser-0.2.0ubuntu2/icon/flAdduser.xpm --- fladduser-0.2.0ubuntu2/icon/flAdduser.xpm 2016-11-24 14:26:04.000000000 +0000 +++ fladduser-0.2.0ubuntu2/icon/flAdduser.xpm 2016-12-14 01:16:21.000000000 +0000 @@ -1,142 +1,162 @@ /* XPM */ -static const char *flAdduser[] = { -/* columns rows colors chars-per-pixel */ -"45 48 88 1 ", -" c #4E1616", -". c #511717", -"X c #551818", -"o c #5B1A1A", -"O c #631C1C", -"+ c #6B1E1E", -"@ c #701F1F", -"# c #5D2020", -"$ c #642020", -"% c #6A2222", -"& c #652F2F", -"* c #732121", -"= c #7B2323", -"- c #7C2828", -"; c #785656", -": c #832525", -"> c #8A2727", -", c #832A2A", -"< c #8D2929", -"1 c #942A2A", -"2 c #9C2C2C", -"3 c #9B3232", -"4 c #A32E2E", -"5 c #A82F2F", -"6 c #A33434", -"7 c #AC3131", -"8 c #AE3E3E", -"9 c #B23232", -"0 c #B43A3A", -"q c #B74040", -"w c #B94444", -"e c #BA4B4B", -"r c #A55252", -"t c #B45555", -"y c #BE5353", -"u c #BD5858", -"i c #967676", -"p c #B06565", -"a c #BF6161", -"s c #B86D6D", -"d c #C05656", -"f c #C25C5C", -"g c #C46363", -"h c #C56A6A", -"j c #C86D6D", -"k c #C57272", -"l c #CA7373", -"z c #C77C7C", -"x c #CE7C7C", -"c c #8D8D8D", -"v c #9C9999", -"b c #A19E9E", -"n c #A4A2A2", -"m c #A8A5A5", -"M c #AEACAC", -"N c #B5B3B3", -"B c #BAB7B7", -"V c #BDBBBB", -"C c #CA8282", -"Z c #CC8C8C", -"A c #D18484", -"S c #D38C8C", -"D c #CD9191", -"F c #D69393", -"G c #D89797", -"H c #D49A9A", -"J c #DA9C9C", -"K c #CAACAC", -"L c #D5A4A4", -"P c #DCA4A4", -"I c #D6ABAB", -"U c #C7B5B5", -"Y c #C8B2B2", -"T c #C8B9B9", -"R c #D7B3B3", -"E c #D8B7B7", -"W c #DABDBD", -"Q c #C4C2C2", -"! c #CFCDCD", -"~ c #DCC3C3", -"^ c #DDCACA", -"/ c #D5D5D5", -"( c #DDDDDD", -") c #E0CDCD", -"_ c #E1D5D5", -"` c #E2DCDC", -"' c #E5E5E5", -"] c None", -/* pixels */ -"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]", -"]]]]GPPPPJJJGGFSSAAAxxxllljgjgggfddyeeew]]]]]", -"]]]PPPPPJJJGFSSSAAAxxlljjjjgggddddyeeeqw0]]]]", -"]]PPPPPPJGFFSSSAAxxxlljjjgggffdddeeewwq009]]]", -"]JPPPJJJGFJJGSAxAxxlljjjggffdlxAheeqq000099]]", -"]PPPPJGJ~`''''~FxllljhjgggfJ_''''_Hwq009999]]", -"]PJJJGP`''''''''Lkjhhgggfg^'''''''')e099999]]", -"]JJJGJ'''''''''''Gjhgggff~''''''''''~079999]]", -"]JGGF)'''''''''''`kggffdS''''''''''''C99999]]", -"]JFFG'''''''''''''Fgffdd~''''''''''''~99994]]", -"]GSSL'''''''''''''Iffddd_'''''''''''''99554]]", -"]SSSP'''''''''''''Pdddee_'''''''''''''99944]]", -"]SAAG'''''''''''''SydeeeE''''''''''''~99444]]", -"]AAxx_''''''''''''gyeeewz''''''''''''z57442]]", -"]AAxxS'''''''''''Heeewww0E''''''''''W994442]]", -"]xxxxjH'''''''''Lyeeww000qR''''''''Wq754221]]", -"]xxlkjlK!'''''/Ugewwq00090CB/''''/TZ9544221]]", -"]xjkjZ`(vnNBBmv!'Dwq0009e~'NvnMMnvB'^t42211]]", -"]ljjJ'''VvvvvvN'''Rw099u`''`nvvvvn('''s111<]]", -"]jhL'''''QbvvV'''''W09u`''''(NbbN('''''p11>]]", -"]hg`'''''''(''''''''a9D''''''''''''''''K<<>]]", -"]gg'''''''''''''''''a9D''''''''''''''''K<<:]]", -"]gf`''''''''''''''''g9D''''''''''''''''K>::]]", -"]ff`''''''''''''''''a9D''''''''''''''''K>::]]", -"]fd`''''''''''''''''g9D''''''''''''''''K::=]]", -"]dd`''''''''''''''''a9D''''''''''''''''K:==*]", -"]de`''''''''''''''''h9D''''''''''''''''Y:=*@]", -"]ee`''''''''''''''''s9D''''''''''''''''K==*@]", -"]ee`''''''''''''''''s9D''''''''''''''''Y*@@@]", -"]e0`''''''''''''''''h9S''''''''''''''''K=@@+]", -"]w0`''''''''''''''''h9D''''''''''''''''Y*@+O]", -"]00`''''''''''''''''j9D''''''''''''''''Y*@OO]", -"]09`''''''''''''''''s9D''''''''''''''''U@+OO]", -"]99`''''''''''''''''j9D''''''''''''''''U+OOO]", -"]99`''''''''''''''''h9D''''''''''''''''U+Ooo]", -"]99`''''''''''''''''k9D''''''''''''''''UOOoo]", -"]99`''''''''''''''''k9D''''''''''''''''TOooX]", -"]99`''''''''''''''''k9D''''''''''''''''TOoXo]", -"]99`''''''''''''''''k7Z''''''''''''''''TooXX]", -"]99`''''''''''''''''k7Z''''''''''''''''ToX.]]", -"]99weeeeeeeeweeeeeee8442211<>>:==*%@+OOoX. ]]", -"]]9979999999999999975442211>>:===@@+OooXX .]]", -"]]999799999999999999542211<>:==*@@+OOooX. ]]]", -"]]]9999999999999997744221<>:::=*@@+OOoX..]]]]", -"]]ccir8098909900076663331<,,,--*%%%$O#&;ccc]]", -"]ccccccccccccccccccccccccccccccccccccccccccc]", -"]]ccccccccccccccccccccccccccccccccccccccccc]]", -"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]" -}; +static const char * flAdduser_xpm[] = { +"48 48 111 2", +" c None", +". c #B23131", +"+ c #B23232", +"@ c #B23333", +"# c #B23433", +"$ c #B33935", +"% c #B5443B", +"& c #B43F38", +"* c #B33232", +"= c #B23332", +"- c #B85142", +"; c #BD6F50", +"> c #BF7E58", +", c #C08059", +"' c #BF7755", +") c #BA5F49", +"! c #B33B37", +"~ c #B5473C", +"{ c #BD6E50", +"] c #C07F59", +"^ c #BF7C57", +"/ c #BA6049", +"( c #B33835", +"_ c #B64A3E", +": c #B95845", +"< c #B44039", +"[ c #B33433", +"} c #B6453C", +"| c #B85041", +"1 c #BF7754", +"2 c #B95945", +"3 c #BE7654", +"4 c #B33734", +"5 c #B33533", +"6 c #BF7A56", +"7 c #B74F41", +"8 c #B85644", +"9 c #C07E58", +"0 c #B33735", +"a c #B6483D", +"b c #BC684D", +"c c #BC6C4F", +"d c #B64C3F", +"e c #BE7855", +"f c #B95745", +"g c #B95C47", +"h c #B95B46", +"i c #BE7755", +"j c #B85543", +"k c #BD6A4E", +"l c #BB674C", +"m c #B5453B", +"n c #B33634", +"o c #BF7D58", +"p c #B85343", +"q c #B74E40", +"r c #BF7956", +"s c #BA5E48", +"t c #BE7453", +"u c #BE7553", +"v c #B74B3F", +"w c #B5423A", +"x c #B43D38", +"y c #B75242", +"z c #B6463C", +"A c #BC694D", +"B c #B95B47", +"C c #BC694E", +"D c #B54139", +"E c #BA5A46", +"F c #BE7353", +"G c #BE7955", +"H c #BC6A4E", +"I c #B33333", +"J c #B23634", +"K c #B64B3F", +"L c #BA5D48", +"M c #B53F39", +"N c #BD7252", +"O c #B85242", +"P c #B43E38", +"Q c #B23533", +"R c #B43D37", +"S c #BC6B4F", +"T c #B84F40", +"U c #BB644B", +"V c #BD6B4F", +"W c #BA624A", +"X c #B85845", +"Y c #B95A46", +"Z c #B43A36", +"` c #BD7152", +" . c #BF7B57", +".. c #B5483D", +"+. c #B43936", +"@. c #BD7352", +"#. c #B6493D", +"$. c #B33C37", +"%. c #BA5C47", +"&. c #B85342", +"*. c #B95D48", +"=. c #B95443", +"-. c #B85544", +";. c #BF7654", +">. c #B95644", +",. c #B95744", +"'. c #B95946", +"). c #BF7B56", +"!. c #B5433B", +"~. c #B4423A", +"{. c #B13232", +" . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . ", +" @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ ", +" + + + + + + + + + + + # + + + + + + + + + + + + + + + + + + + + $ % & # + + + + + + + + + + ", +"* + + + + + + + = - ; > , ' ) ! + + + + + + + + + + + + + + + ~ { ] , , ^ / ( + + + + + + + + + ", +"+ + + + + + + ( { , , , , , , ^ _ + + + + + + + + + + + + + : , , , , , , , ' < + + + + + + + + ", +"+ + + + + + [ ; , , , , , , , , ] } + + + + + + + + + + + | , , , , , , , , , 1 ( + + + + + + + ", +"+ + + + + + 2 , , , , , , , , , , 3 [ + + + + + + + + + 4 ^ , , , , , , , , , , / + + + + + + + ", +"+ + + + + 5 6 , , , , , , , , , , , 7 + + + + + + + + + 8 , , , , , , , , , , , 9 0 + + + + + + ", +"+ + + + + a , , , , , , , , , , , , b + + + + + + + + + c , , , , , , , , , , , , d + + + + + + ", +"+ + + + + 8 , , , , , , , , , , , , 3 + + + + + + + + + e , , , , , , , , , , , , f + + + + + + ", +"+ + + + + g , , , , , , , , , , , , ^ + + + + + + + + + ^ , , , , , , , , , , , , h + + + + + + ", +"+ + + + + f , , , , , , , , , , , , i + + + + + + + + + 3 , , , , , , , , , , , , j + + + + + + ", +"+ + + + + _ , , , , , , , , , , , , k + + + + + + + + + l , , , , , , , , , , , , m + + + + + + ", +"+ + + + + n o , , , , , , , , , , , p + + + + + + + + + q , , , , , , , , , , , r [ + + + + + + ", +"+ + + + + + s , , , , , , , , , , r n + + + + + + + + + = t , , , , , , , , , , j + + + + + + + ", +"+ + + + + + n u , , , , , , , , , v + + + + + + + + + + + w 9 , , , , , , , , c = + + + + + + + ", +"+ + + + + + + x u , , , , , , ] y + + + + + + + + + + + + + z 6 , , , , , , A n + + + + + + + + ", +"+ + + + + + + + n B r , , > C D + + + + + + + + + + + + + + $ ( E F o G H d I J + + + + + + + + ", +"+ + + + + + K F L 5 = ! M 5 + z N O = + + + + + + + + + P c > j Q + + + + R S e T I + + + + + + ", +"+ + + + J U , , , ' h d a p V , , , N P + + + + + + + - o , , , r W X Y S > , , , V ( + + + + + ", +"+ + + Z ` , , , , , , , , , , , , , , ...+ + + + + h , , , , , , , , , , , , , , , 3 P + + + + ", +"+ + +.@., , , , , , , , , , , , , , , , > #.+ + + g , , , , , , , , , , , , , , , , , i $.+ + + ", +"+ + %., , , , , , , , , , , , , , , , , , F + + + o , , , , , , , , , , , , , , , , , , &.+ + + ", +"+ + *., , , , , , , , , , , , , , , , , , t + + + o , , , , , , , , , , , , , , , , , , =.+ + + ", +"+ + *., , , , , , , , , , , , , , , , , , t + + + o , , , , , , , , , , , , , , , , , , j + + + ", +"+ + *., , , , , , , , , , , , , , , , , , u + + + o , , , , , , , , , , , , , , , , , , -.+ + + ", +"+ + *., , , , , , , , , , , , , , , , , , 3 + + + o , , , , , , , , , , , , , , , , , , j + + + ", +"+ + *., , , , , , , , , , , , , , , , , , u + + + o , , , , , , , , , , , , , , , , , , 8 + + + ", +"+ + *., , , , , , , , , , , , , , , , , , ;.+ + + o , , , , , , , , , , , , , , , , , , >.+ + + ", +"+ + *., , , , , , , , , , , , , , , , , , i + + + o , , , , , , , , , , , , , , , , , , 8 + + + ", +"+ + *., , , , , , , , , , , , , , , , , , i + + + o , , , , , , , , , , , , , , , , , , ,.+ + + ", +"+ + *., , , , , , , , , , , , , , , , , , ' + + + o , , , , , , , , , , , , , , , , , , : + + + ", +"+ + *., , , , , , , , , , , , , , , , , , e + + + o , , , , , , , , , , , , , , , , , , X + + + ", +"+ + *., , , , , , , , , , , , , , , , , , r + + + o , , , , , , , , , , , , , , , , , , : + + + ", +"+ + *., , , , , , , , , , , , , , , , , , r + + + o , , , , , , , , , , , , , , , , , , 2 + + + ", +"+ + *., , , , , , , , , , , , , , , , , , G + + + o , , , , , , , , , , , , , , , , , , '.+ + + ", +"+ + *., , , , , , , , , , , , , , , , , , 6 + + + o , , , , , , , , , , , , , , , , , , Y + + + ", +"+ + *., , , , , , , , , , , , , , , , , , 6 + + + o , , , , , , , , , , , , , , , , , , Y + + + ", +"+ + *., , , , , , , , , , , , , , , , , , 6 + + + o , , , , , , , , , , , , , , , , , , Y + + + ", +"+ + *., , , , , , , , , , , , , , , , , , ).+ + + o , , , , , , , , , , , , , , , , , , h + + + ", +"+ + *., , , , , , , , , , , , , , , , , , .+ + + o , , , , , , , , , , , , , , , , , , %.+ + + ", +"+ + *., , , , , , , , , , , , , , , , , , ^ + + + o , , , , , , , , , , , , , , , , , , h + + + ", +"+ + *., , , , , , , , , , , , , , , , , , ^ + + + o , , , , , , , , , , , , , , , , , , g + + + ", +"+ + *., , , , , , , , , , , , , , , , , , o + + + o , , , , , , , , , , , , , , , , , , L + + + ", +"* + !.- - - - - - - - - - - - - - - - - - | + + + D ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.! + + + ", +" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ", +" . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {. ", +" * + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "}; diff -Nru fladduser-0.2.0ubuntu2/include/common.hpp fladduser-0.2.0ubuntu2/include/common.hpp --- fladduser-0.2.0ubuntu2/include/common.hpp 1970-01-01 00:00:00.000000000 +0000 +++ fladduser-0.2.0ubuntu2/include/common.hpp 2016-12-14 01:16:21.000000000 +0000 @@ -0,0 +1,154 @@ +#ifndef HEADER_LINUX_COMMON_HPP +#define HEADER_LINUX_COMMON_HPP +/** + * common linux functions - version 0.1.0 + * -------------------------------------------------------- + * Copyright (C) 2016, by Israel Dahl (israeldahl@gmail.com) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef LINUX_COMMON_HAS_X +#include +//#include +#endif + +#ifndef LINUX_COMMON_VERSION +// Define version macro; evaluates to major * 100 + minor so that it's safe to use in less-than comparisons +# define LINUX_COMMON_VERSION 010 +#endif + +// If no API is defined, assume default +#ifndef LINUX_COMMON_API +# define LINUX_COMMON_API +#endif + + +namespace linuxcommon{ + ///const char* + const char* convert_num_to_string(double num); + ///string functions + //c + std::string check_list_of_exec(std::vector list); + std::string color_double_to_string(const double *rgb); + std::string convert_num_to_string(int num); + std::string convert_unsigned_to_string(unsigned int num); + std::string current_path(int whichPath); + std::string current_directory(); + //f + std::string file_to_string(std::string fileWithPath); + std::string find_xdg_config_dir_subdir(std::string subdir); + std::string find_xdg_data_dir_subdir(std::string subdir); + std::string fix_file_path_for_command_line(std::string filepath); + //g + std::string get_cache_dir(); + std::string get_config_dir(); + std::string get_directory_from_filename(std::string filename); + std::string get_gtk_icon_theme(); + std::string get_gtk_widget_theme(); + std::string get_gtk_item(std::string itemToGet, std::string defaultTheme); + std::string get_line_with_equal(std::string filename, std::string line);/** This function is used for files like *.desktop files to get a value*/ + std::string get_line_with_equal_after_header(std::string header,std::string filename, std::string line);/** This function is used for files like *.desktop files to get a value*/ + std::string get_shell_for_C();/** This is a specialized internal function to return something akin to "bash -c '"*/ + std::string get_symlinkpath(std::string symlink);/** This function dereferences a symlink to the actual file*/ + std::string grep(std::string args, std::string filename);/** Return the FIRST match of the 'args' from a file*/ + std::string grep_first_after(std::string after_this, std::string grep_this, std::string filename); /** Look for a string in a file AFTER a certain string*/ + //h + std::string home_path(); + //l + std::string look_for_file_in_subdirs(std::string fileWITHOUTpath,std::string dir); + std::string look_for_first_file_in_subdirs(std::string fileWITHOUTpath,std::string dir); + std::string look_for_icon_file(std::string fileWITHOUTpath); + //s + std::string sed_i(std::string input, std::string remove, std::string replace); + //r + std::string remove_cruft(std::string StringInput, std::string CruftToRemove); + std::string remove_percentage(std::string line); + //t + std::string test_file_in_vector_path(std::string fileWithNOPATH,std::vector directories_to_check); + std::string term_out(std::string terminal_Command_You_Want_Output_From); + //q + std::string quote_xml(std::string input); + ///COLOR functions + #ifdef LINUX_COMMON_HAS_X + std::string x_color_from_name(const char *colorName); + #endif + ///vector + std::vector comma_vector(std::string LINE,std::vector Vector); + std::vector delimiter_vector_from_string(std::string string_to_become_vector,std::string delimiter);/** make a string vector from a string with a delimiter string*/ + std::vector desktop_dirs(); + std::vector desktop_paths(); + std::vector file_to_vector(std::string filename); + std::vector get_file_vector(std::string DIRECTORY,std::string file); + std::vector grep_lines(std::string args, std::string filename); + std::vector join_string_vectors(std::vector vectorA,std::vector vectorB); + std::vector sort_array(std::vector thisPath); + std::vector split_paths(const char* envVar, const char* incasenothingexists); + std::vector xdg_conf_dirs(); + ///boolean + bool append_string_to_file(std::string STRING, std::string FILENAME); + bool has_file_extention_at_end(std::string filename,std::string extention); + bool pkill(std::string programname); + bool program_is_running(std::string program_line); + bool save_string_to_file(std::string MSG,std::string filename);/**This should make the directory recursively if it does not exist*/ + bool switch_gtk_item(std::string item, std::string value); + bool look_for_string_in_vector(std::vector vector_to_check,std::string item_to_find); + bool test_file(std::string fileWithFullPATH); + bool test_dir(std::string fullpath); + bool test_exec(std::string stringEXEC); + ///int + int getProcIdByName(std::string procName); + int mkdir_p(std::string dirToMake); + int run_a_program(std::string program); + int run_a_program_in_background(std::string program); + ///double + double convert_string_to_double(std::string num); + ///unsigned int + unsigned int convert_string_to_number(const char* num); + #ifdef LINUX_COMMON_HAS_X + unsigned int get_fl_color(std::string color); + unsigned int get_fl_color(std::string color, unsigned int &color2); + #endif + unsigned int items_in_path(); + //void + void echo(std::string msg); + void echo_error(std::string msg); + void print_file_to_stdout(std::string fileNameWithFullPath); + void processDirEnt(struct dirent* ent); +} +#endif diff -Nru fladduser-0.2.0ubuntu2/LICENSE fladduser-0.2.0ubuntu2/LICENSE --- fladduser-0.2.0ubuntu2/LICENSE 1970-01-01 00:00:00.000000000 +0000 +++ fladduser-0.2.0ubuntu2/LICENSE 2016-12-14 01:16:21.000000000 +0000 @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff -Nru fladduser-0.2.0ubuntu2/README.md fladduser-0.2.0ubuntu2/README.md --- fladduser-0.2.0ubuntu2/README.md 1970-01-01 00:00:00.000000000 +0000 +++ fladduser-0.2.0ubuntu2/README.md 2016-12-14 01:16:21.000000000 +0000 @@ -0,0 +1,21 @@ +![Alt text](/icon/flAdduser.png?raw=true "Main Window") +#fladduser + +A small lightweight program to add users to a GNU/Linux system +Build Depends on Debian/Ubuntu + - debhelper (>= 9.0.0) + - cmake (>=2.8) + - gcc-multilib [amd64] + - g++-multilib [amd64] + - libc6 + - fluid + - libfltk-images1.3 + - libfltk1.3 + - libfltk1.3-dev + - libfltk1.3-compat-headers + - libgcc1 + - libxpm-dev + - libx11-dev + - pkg-config + +![Alt text](/screenshots/fladduser.png?raw=true "Main Window") Binary files /tmp/tmpynf3q6/Mgod92CBlv/fladduser-0.2.0ubuntu2/screenshots/fladduser.png and /tmp/tmpynf3q6/OJ3k38BdZz/fladduser-0.2.0ubuntu2/screenshots/fladduser.png differ diff -Nru fladduser-0.2.0ubuntu2/src/common.cpp fladduser-0.2.0ubuntu2/src/common.cpp --- fladduser-0.2.0ubuntu2/src/common.cpp 1970-01-01 00:00:00.000000000 +0000 +++ fladduser-0.2.0ubuntu2/src/common.cpp 2016-12-14 01:16:21.000000000 +0000 @@ -0,0 +1,1680 @@ +/* + * linuxcommon.cpp + * + * Copyright 2016 Israel Dahl + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * + */ + +#ifndef SOURCE_LINUX_COMMON_CPP +#define SOURCE_LINUX_COMMON_CPP + +#define LINUX_COMMON__NS_BEGIN namespace linuxcommon { +#define LINUX_COMMON__NS_END } +#include "../include/common.hpp" +LINUX_COMMON__NS_BEGIN + ///const char* functions//////////////////////////////////////////// + /** + * @param + */ + const char* convert_num_to_string(double num){ + std::string number; + std::stringstream out; + out << num; + number = out.str(); + if(number.compare("")==0){return NULL;} + return number.c_str(); + } + ///STRING FUNCTIONS///////////////////////////////////////////////// + //C + /** check a list of executables to see if thy exist and return the first working one + * @param list the std::vector list of executables to check + */ + std::string check_list_of_exec(std::vector list){ + for( std::vector::iterator it = list.begin(); + it!=list.end(); + ++it){ + std::string tmp=*it; + bool tester=test_exec(tmp); + if(tester){return tmp;} + } + return ""; + } + /** turn a double red green blue value into an HTML string + * @param rgb the double to convert + */ + std::string color_double_to_string(const double *rgb){ + char tmp[8]; + std::snprintf(tmp, sizeof(tmp), "#%02x%02x%02x", int(rgb[0]), int(rgb[1]), int(rgb[2])); + return tmp; + } + /** convert an integer number to a string + * @param num the number to convert + */ + std::string convert_num_to_string(int num){ + std::string number; + std::stringstream out; + out << num; + number = out.str(); + return number; + } + /** convert an unsigned integer to a string + * @param num the unsigned int to convert + */ + std::string convert_unsigned_to_string(unsigned int num){ + std::string number; + std::stringstream out; + out << num; + number = out.str(); + return number; + } + /** return the current working directory */ + std::string current_directory(){ + char buff [ PATH_MAX ]; + /** use getcwd and handle errors */ + if(getcwd(buff,PATH_MAX)==0){ + int error = errno; + switch ( error ){ + case EACCES: + throw std::runtime_error("Access denied"); + case ENOMEM: + throw std::runtime_error("Insufficient storage"); + default: { + std::ostringstream str; + str << "Unrecognised error" << error; + throw std::runtime_error(str.str()); + + } + } + } + if(buff==NULL){return "";} + /** conver the buffer into a string */ + std::string dirToOpen=(buff); + unsigned int finder=dirToOpen.rfind('/'); + /** append a / to the end */ + if(finder+1!=dirToOpen.length()){ + dirToOpen+="/"; + } + return dirToOpen; + } + /** pick a path from the $PATH variable + * these are separated by : + * @param whichPath specify which path to get + */ + std::string current_path(int whichPath){ + unsigned int lastPath = 0; + std::string result; + if (whichPath >=1){lastPath = whichPath - 1;} + else {lastPath = 0;} + const char* path =getenv("PATH"); + std::string stringPATH; + if(path == NULL){stringPATH = "/usr/bin";} + else{stringPATH = path;} + std::string::size_type firstPosition = stringPATH.find(':'); + if(firstPosition>stringPATH.length()){return stringPATH.c_str();} + std::string::size_type position = firstPosition; + for (int i=1;i<=whichPath;i++){position = stringPATH.find(':',position+1);} + for (unsigned int j=1;j<=lastPath;j++){firstPosition = stringPATH.find(':',firstPosition+1);} + result = stringPATH.substr (firstPosition+1,((position-firstPosition)-1)); + return result; + } + //G + /**get the XDG_CACHE_HOME variable OR $HOME/.cache*/ + std::string get_cache_dir(){ + std::string cacheFile; + const char* xdgcache = getenv("XDG_CACHE_HOME"); + if(xdgcache==NULL){ + const char* home = getenv("HOME"); + if(home==NULL){return NULL;} + else{ + std::string temp = home; + temp+="/.cache"; + cacheFile=temp; + } + } + else{ + cacheFile=xdgcache; + } + if(cacheFile.compare("")==0){return "";} + if(!test_dir(cacheFile)){mkdir_p(cacheFile.c_str());} + return cacheFile; + } + /** Get XDG_CONFIG_HOME or the equivalent*/ + std::string get_config_dir(){ + std::string cacheFile; + const char* xdgcache = getenv("XDG_CONFIG_HOME"); + if(xdgcache==NULL){ + std::string home = home_path(); + if(home.compare("")==0){return home;} + else{ + home+=".config"; + cacheFile=home; + } + } + else{ + cacheFile=xdgcache; + } + if(cacheFile.compare("")==0){return "";} + cacheFile+="/"; + if(!test_dir(cacheFile)){mkdir_p(cacheFile.c_str());} + return cacheFile; + } + /** return the directory portion of a filename + * @param filename the filename get the directory from + */ + std::string get_directory_from_filename(std::string filename){ + unsigned int finder=filename.rfind("/"); + if(finderheader_length){find_header="["+find_header;} + if(close>header_length){find_header=find_header+"]";} + std::string result=grep_first_after(find_header,line,filename); + unsigned int found =result.find("="); + if(found < result.length()){result=result.substr(found+1,std::string::npos);} + unsigned int space=result.find(" "); + if(space==0){result=result.substr(space+1,std::string::npos);} + return result; + } + /** This is a specialized internal function to return something akin to "bash -c '"*/ + std::string get_shell_for_C(){ + std::string shell=term_out("which bash"); + if(shell.compare("")==0){ + if(!test_exec(shell)){ + shell=term_out("which sh"); + if(!test_exec(shell)){return "";} + //TODO make this work for others + } + } + shell=shell+" -c '"; + return shell; + } + /** This function dereferences a symlink to the actual file*/ + std::string get_symlinkpath(std::string symlink){ + std::vector buf(400); + size_t len; + do{ + buf.resize(buf.size() + 100); + len = ::readlink(symlink.c_str(), &(buf[0]), buf.size()); + } + while(buf.size() == len); + if (len > 0){ + buf[len] = '\0'; + return (std::string(&(buf[0]))); + } + echo_error("Error with symlink"); + return ""; + } + /** Return the FIRST match of the 'args' from a file + * this is like line=`grep -m 1 $args $filename` + * @param args the string to 'grep' + * @param filename the file to 'grep' from + */ + std::string grep(std::string args, std::string filename) { + std::string line; + int lengthofARGS = args.length(); + std::string subString; + std::ifstream inputFileStrem (filename.c_str(), std::ifstream::in); + /** check if the input file stream is open */ + if(inputFileStrem.is_open()){ + while (getline(inputFileStrem,line)){ + subString=line.substr(0,lengthofARGS); + /** if found return it immediately */ + if(subString.compare(args)==0){return line;} + } + } + return ""; + } + /** Look for a string in a file AFTER a certain string + * @param after_this look for this first + * @param grep_this get this string + * @param filename the file to look in + */ + std::string grep_first_after(std::string after_this, std::string grep_this, std::string filename){ + echo("AFTER THIS="+after_this+"\nLOOK FOR="+grep_this+"\nIN="+filename); + bool found_after_this=false; + std::string line; + int lengthofARGS = grep_this.length(); + std::string subString; + std::ifstream inputFileStrem (filename.c_str(), std::ifstream::in); + /** check if the input file stream is open */ + if(inputFileStrem.is_open()){ + while (getline(inputFileStrem,line)){ + subString=line.substr(0,lengthofARGS); + if(line.find(after_this) xdgDataDirs = desktop_dirs(); + std::string dirToOpen; + for( std::vector::iterator it = xdgDataDirs.begin(); + it!=xdgDataDirs.end(); + ++it){ + dirToOpen=*it; + unsigned int finder=dirToOpen.rfind('/'); + if(finder+1==dirToOpen.length()){ + dirToOpen+=subdir; + } + else{ + dirToOpen+="/"; + dirToOpen+=subdir; + } + if(test_dir(dirToOpen)){ + if(finder+1==dirToOpen.length()){ + return dirToOpen; + } + else{ + dirToOpen+="/"; + return dirToOpen; + } + } + else{echo_error(dirToOpen+" does not exist");} + } + return ""; + } + /** find a directory in the XDG_CONFIG_DIRS paths + * @param subdir the subdirectory to look for + */ + std::string find_xdg_config_dir_subdir(std::string subdir){ + /** use the xdg_conf_dirs() function to get a vector of the XDG_CONFIG_DIRS paths*/ + std::vector xdgDataDirs = xdg_conf_dirs(); + std::string dirToOpen; + for( std::vector::iterator it = xdgDataDirs.begin(); + it!=xdgDataDirs.end(); + ++it){ + dirToOpen=*it; + unsigned int finder=dirToOpen.rfind('/'); + if(finder+1==dirToOpen.length()){ + dirToOpen+=subdir; + } + else{ + dirToOpen+="/"; + dirToOpen+=subdir; + } + if(test_dir(dirToOpen)){ + if(finder+1==dirToOpen.length()){ + return dirToOpen; + } + else{ + dirToOpen+="/"; + return dirToOpen; + } + } + } + return ""; + } + /** This function will escape spaces in filenames for use in terminal commands + * @param filepath the filename to fix up + */ + std::string fix_file_path_for_command_line(std::string filepath){ + std::string Filename=filepath; + std::string escape = "\\ "; + size_t start_pos = 0; + while((start_pos = Filename.find(' ', start_pos)) != std::string::npos) { + Filename.replace(start_pos, 1, escape); + start_pos += escape.length(); // Handles case where 'to' is a substring of 'from' + //std::cout<