From 4f8802e8c02e4a51fea4378ee0f658adaea196bc Mon Sep 17 00:00:00 2001 From: Frederic Pillon Date: Fri, 11 Oct 2019 17:48:15 +0200 Subject: [PATCH] massStorageCopy becomes a script This closes #41 and #42. Signed-off-by: Frederic Pillon --- linux/massStorageCopy | Bin 12535 -> 2157 bytes macosx/massStorageCopyMacOsX | Bin 13844 -> 2080 bytes src/massStorageCopy/Makefile | 22 --- src/massStorageCopy/massStorageCopy.c | 157 ------------------- src/massStorageCopy/massStorageCopyMacOsX.c | 158 -------------------- 5 files changed, 337 deletions(-) delete mode 100644 src/massStorageCopy/Makefile delete mode 100644 src/massStorageCopy/massStorageCopy.c delete mode 100644 src/massStorageCopy/massStorageCopyMacOsX.c diff --git a/linux/massStorageCopy b/linux/massStorageCopy index a5f7bd29ee1bf1890c59848dd60cac2aea10a86e..8467d5f5705e7e0145c21bed5bf3c638deb3c201 100755 GIT binary patch literal 2157 zcmb_dZExa65dOZu;)y{bkvlJF_;h zrcEogwU8OFXP$X`X52dK&9&*xWw{ik@<=U=-53`C_G;m)Q_`bS-AbqByig@1{S1_I z)`?aCd=kH2f4Ln`Zbr#vx1R{n!q2+&g52IObfMPLFGpfUPW{?yCh4LNl{JOIK?1P={UC#(j)NK$4D=$i7_a#on+n3+?{i z>7cfoykd83Ts1W9L2a4-j&_V0xvhwOWB0URnt&$^YiGAQSNYi?|BzM4p8-$2{T1d> zB~a%z$f_)7NEiPQW-|$6x%nFtML4MIeygO*mfV_%&0_rVc0_~(Z7L#^lUUJu37j1c zhe%E{N(57jbf68reco%|{W$%eyhCoO+pU1X^$I|v^I1k)ut&AadLjD~FUU5uNb?Rl zl;MD$OY7)hL(+p&YpSI2vkL-a2QgH>K>DfJtEF2czwlb5!LlZyW2d%skJ0;w)7N}d z^nGqMd~rrdjlyNrMNaP8lpC5l+7(N=Rm5$Xd90+*mJ}|+=Re{Q6A%KY9@P*DM%*#u<5^%I`(6E!nSlbG`&=mcSU}ZnA$sR(t1|^%(&}?gWxm*vWDH5f6JC-bN0nD7yqwoQ6msoT9h!b(hoKv?;PBJ2NW7nK&2@zIg`v>s{LrHc7 literal 12535 zcmeHNeQ*@VmG6~S_5wl@Up8ke$3RvF60w#*rWBdP5|a3^1yVo|5^N8v-4U~9wY%Aw z#Zt-_i(7=z$>bC#=i=&8R}g<(Qbm<4>zNkAm{i^Uc~xrZP51A;*RQ)@e{9cmKi=N4E)WO^6-q>@AR2!n7-~TL>|#gK zAT%*UEE9h&?i9CxMOnijbU+$1kjlUdf=WT%z}@?TA<{fx5@ldZLL>z8lDg+Y7sULc z%8`c_2@!fB7$TX-bQr{PDK9}ZAM*K-kqW>h%2@`9c}$c|Y6B)IS=W1Zyn2oh)!z<= zNNXS?DfyQn2mDl^eH1UYK<=&IBzPp|XZ!9>CVK8p##ba0sa$`=N=H^YGUlax{pM|W zI_;p%g&^jg52EiVKRNFQfBc8`pZxmPAO7d6q0gVVaOSz56lK(<4f?8N+0q{3KLb^R zX1#r7ZsUg|)yE$A_31MwuFO60{VVY5jp6GaNa1Tf{GJat`EbOC@9^QreR!7-Kj6c| zK75Z4AM@e&Jy=6}u?Mp~kNEIgK77`P`+fLjAO5Nj-{r$weR$M|PXPBH4~E#kbI?=I zAHcd~!ZHYaZt(!@NXdHfQ7?kS1@w#HFGX6OXt`;u0~N6A|Gm)}ULEgZ)~D z$;kdL!^C7imfh*}Ul}H7IqA!7`XYQ~t@8e=RBVaB%#v5av@h+4)o zgs5XY6YDQy44_8Fxd07h-GvQmF72D!y;*t>r?DbK8K7Tf}b4>bykK#Q+D7829jWJWf0aT>smLhku!W_k*tPEoL*;6?6Ps!O)kto6ip8cTz`vKJFd${*6?J z$GrHI1#>Ghc;qK4$y{JeE~G}VAx7s_9xDstOYMJPc=(6XdQYcT{niAXg*zyNb&MxiiT< zthh{&`!VL!(eEiP6Xd=PU0IjyThXWaOI;)FAag=)nq&n(PpKlA-(UXX|DP!F1 z#*J>w%?kgM7WTqsXrNA^ zZy^UYIW9Roq5jbyi$%b;{A1y^V&zZ{qfvQuhU=5uoI(!vFkrE`i^4wSkSdiY#s1Tk z`+tg`5UJ_nmx1Yk@1QW``5Q!q-~Kn;%+chIt=wlI`93AjKvH18f`N>pu!QF6ecCt% z71pxPsb%BEzIhSlQ@-7RqeE zs23OK6kdVnloQTF1pn32f3^3bQGYQDEo=~#`{Qtk?3!T|SqC+=z8SJ+VJnpesJPny z2-71AWKB2&IpR5@P|OSHufmbZV(}1WIc>#hYs{IHfZG5AV@`bm*Af0af4Y>a6Ug=q z*CDkkwT;YX86ykiG?yz>N4N^5l^^Pcb$6bfL6OY+i*=9eAO#ttXL+LTabASQ;CC0dZ%Oc7r7?Zdf+d zm|sgp`waQoHbX;bP3Mwvt;f)!S~6kT+A<3j%0_Ji%z>q~OP5Eq_WmYq$>z?scD=rq z(MtK$S1mzVow82aikg^~HNKupWDQG;rZnvObA5Pgh|Cn*QhQSAM^kR?wOvqM3O0gI z5;IY546gv%t_S;T`l+zOioiVt&4Cb46XrhKl(uV--~`=PJru&R2w5UaJUJLA?OF zioE;@nGVw)nD)T52c|tR?SW|zOnYG31JfRu_Q13U{y%u&$iZM}5X8FjwT#5CZs7yL z5ROzt8$J!=Xh)t&<48x~xJK~ov-|~|A-nkZ*NW+5IB(`F*YP~ggb=?2%$MKWVUTBi zd}qQDiwyimAn>7u?@oM&Dnl>Yx)*c+^fc&s&`Hoa(9b}>0bK^&g1Z5?f$jpW2CV~a2layX zf)0S520aft2|5Q-Wvp*)ZPJ!)>%nJ_oYoL&j5MrRnUkpgoAnKmx`xQA zM|%+CY*NOiO5uZvkLLzXp?)OQk@q%9(e6pmFRw$YDgF91Yoe5Q$th+*ozS$tyA%{X!@ z!;+y5r!xa4@?c#?N7 z061n;pp4|xpdRPNJJ1^kah@QOI-DQdL7W@Z<2*VJ!1<$sNM`&GwbJW?UKjKRRU;vzPpJEpN00Y&#?d)hc90vW$8Z>=>~Y;{ z!x^yp9!0q-mv;-ON5AZV-VW%U^^~jhp7-dyXMbTDVMb05yZ+zmMU0S9v= zJM+iE9I^Pui}CMZXIAc*!t53FGscx8=dZi7k8rTFVsjij*qOQNce>QwJ#bt)a-KFK zaQq>Z%H0F}JB1gLEyok%Qh8g9DJPU-7vt@>p!i*pEmq|RuySzUQ|0cBaO*|zFrnFl zTY%NxiSn-i%M*OW0p#vQ%=wE5c%C?f_=qR}-vTRt1jJmqmQt62_2D|eqbQC9+WU9J zJfKqem%u!@RQM7w4wmm#C%|{KVWVuuzniks(k|W zuLoBB6+nMA0ju^=z6n_MR{;GL1Lj=~&V;$}pGCPFI68(rSOY#v4F9qIb4zB6mw;7& zYq%l!sz;ys{|%Vy3H5mg?KeL8WmgU{=J`VL2{3;*i05LZF7+%9w6_SD$L`8ry-(ii z!`poL5g&fshoAD{XMt7wSicv2@-sgCmIrI7@2@#`cDJ@Gy4Al*Z%i_RbYKz^x-iN)*$~6VBP^y{Wsx}Gyhd!RX+Vg#f2#UNyu3K z?ab%~4RO5(GyhuPL67}zVD5jIWiEDrU-RjUSk|`eTyJkAhFgF4w{FopHg4_Kb%9%i z#%>%^8d=@$(__hW%CK;4@lz~akEiwB$#hRNsmF12YU$BjKh6sKGD!nRdy&=me4!qe zZ=$4gFYoNkb?mmY1Gsz0y?i{^*EfJH9;EXX;0D#csAX+MaX8^^#knMEpGe`VrOpFh zk3`bz53Cwd?Jh+t75!4=Q~_(Q%=-eRXrorj4!8 z@<`+bN};ds=v>>ov!>@bn%pN56lszQvuGtx3!aOjPH3uUE^xmh5He yI!2m1<~c%iTqv;8xonJn!H86|{f6-{{!Eh9>vlJF~XI zc6+VV)V8lw0A zUWA8FD$B9nnZ#>r#IBH!>ij~y2tXwpi|D_2j2b9S8A~d*;v~_(TH-#QVN%!O{eqt7 zn4GF{UR=D#qG{ihG0!>j;<|MR#ItMEn4m&ScYwD@Y<}o!&act(hEx@vEEpFYWyb*c zV0T%Hm4ZY@jl_9DJ#^A5Iy?;C3@(PadA`P%=yv|Y&BN#o|Bb`_;q8~G1$S$``g82W zpcGUF=@e{8P-aZ46i+JmSX+mcOrCy|E~S*VL=U~vnf8Za6a3%zE}%SXk1O$22))KV z`aQ&%#~6!u@Ec{Qw}CC(W7ZsrwPt32mafp|u?oAWj7OMGfhe9u4f|rF*R^457W$*w z>A13+f5Yz7xN>Ov9s%ytsSa`Shl5#hM1`<;?5*>GzbY!m@8WbAu zjod4uqf9)u(kB~&LYS5ssFBw(hh}oD&$?j)F9TCJsF3h6>MEDZMlQ?XsS2FRT0umZ za*>U1(wBYI>-8fy69ZNmfIcQc3f>0H!SXtBD!iEr zk*dM%gFGJVM5cVmpi>+Mt5c*PA0080wlE2ZP#tW8GGp9JXqwPmPvGJN1LU1z#=Kkb;X`5t&M3W6K1Bb zr#+Q0(~kXt_KM~-UA7lCQPBS<6ai|}>`IkwlcVg-(&hLTs5ZnLPchLRwoWOTW+M9U z#4Pc3)RT-iBY)3WyR=G86hmFT>x zbpU2MQEga`tK8N++yg=d1&`1))ZJ{LQW|&x8r;)}djdS}jZYvS20jDz&SlVt{CLom zGZoJ-&*5}r>VIHD`*V&V{1|vT@(kp2vl;u`M7;gnj=n?(Fw?2Xw7ciMAK9-jXngd( zo9>RC_4KcfoC)46WbOERk zR?m`EOE8XjJCu;lLS}yf{6YUMRG9v$rJ4t79;kVs=7E|AY96S0pyq*^2WlRud7$Qj zng{+@J#dxb{n5yc>qfrrTlm}G@V+u(_}K}=8`-4=-^O3aMn3W=1YYx7VB9Vlj|;|O zFm95Jy@D|g#9Qrzjbdk|(5uu~EaX`#uoHA3P<6_g6IA#%A|JvT0xV^wpXs#&h%d zt`$?+^a%tZ41ea`qMB}aS4@n!wJ_d=G--R-~ z^-nNTpe0|hb3u#e?i3Ql0xKo0p1VUxHd8VPtC-|-=-u#_2R}oI$;b_d=&SFM_UgXK ziRU6~QDJo$n=wZAP9mY%9imxesqoEtL9=M#Zio583TZg44BKUf*Gj`PrQy0`8NN^& zenV8}1>*=u8J>F&4ga1a@ayJ7lv~~s-pa@g@W}$VhTTQP`STy=O8a$mD^~9{ZY2Lg ze-?J%BQWN<+h~i?R4DxhQcQjq1i1-JQkmE$O$>>)Grv=2A}LG^(!_k(-PfeIv! zrn^e$-cDVpqC1zHh0fmgkIBhk5{2AQCqY`+i-=V)1x*UUKjGqBpnfhW#`ksA`nBE0ox_T|@2hnk<~0mhU*p$3fL1NujQzo1pshwyxL)q$ z0mw=NsOu4BTY;m_GXG%|HBMxc$jFQYS3jl%n5wFh%}tF3XZB4#vp4a)t67 zoe_VID`bR5alAJeu{jAWCMJA!h1@-BLc<(ei#Loz`X-#=x&0VqL2UN1cZ-{S zT)2t81W~-&I2&ABo^W4b_{gL@Y;rAxfKDiEgrK+%Ti+FvjJ(6;_0Lc7-1u|SsL=hB zu#GLg8;v}73(DXTa(FZPk=0c7+%(zulI`C~+6e76a(k(8j!?L>n+knWfpk&9I~ZI} zu2**o6?2gjP{CoViVnL0Lt2w}*?Z}(jl2mjuJLD%(3yVSs5lQ(&%{{wp_%7)Kv}x# zp^2ia_Hc%NM2saq@E|0B=riZ4pRJ~C|pfyg48-v$6@^nmytS&)Cy2n zWujeHlirZguUXupujq^?taQ}rzIYRGtG=Qql}$S7R6OY{$Sk~A-&9|(T@g)oM4gn~ zr>D|RJeABe)oariw>0U+wt9O!8HLzM>9JJ0kJ8pAy~2{-VPza>vAv#*_E<}xr6XOM z$|gGWc1w@yiFn4*7i2ITJL*_q_RU{3f8i3nxwlE5x3+b4v)QLa4<-RbD3d8i?}QIKmgwseRy1Sj zRx*>dE#2w1;Dj6EF-wnU;3wO*VostDR5A(5>VTu;nG7u#N6lX<@n(moX_3ln>_3ff z-grh6`JfUKbFRVJjsOo!F{eY@}sOsIS z-mB^tRDD3zhgAKBs^3!e5mkTKao6-}9;kVs=7E|AY96S0pyq*^2WlRud7$Qjng?ng z_miOEmbqp|DESod{iS2k*QXrH%d4N888W!q^D0I?p#Aru9sqQC~l z?{UTV^d>?-XrlEq%q3E2PWvG!4RoipOHntWZCRw#pi2RpGg}xgx?mXvy;2~Cui5<}z<5U3pmcz^ zCz?p4VuXW)_^jVfVcME~kAPwxgxd*itE9by7~k$EtR%&|6agc}_bU#mDfDHLAjVF3I__azi^1}X3`!Xp2E=C zj~Emx@jWy#zpp0dbC|$Nz7!aIibPt4vK+6k!d+FE|6@_E-(Q7qt-|>#d{-4_fVJG- z!&UgnDm+|;N2~DuDm+$&4^`oy3Lmb*d}t^iUq}L!GEJ|-v#apjDvYh5F`zgTneT#p zAmM7xM&`Z106vyVV<3Aj@+ruC(_>f>p*M~HZo+3_9U18oK8Euhk^A6eWPU&Y-|NFX z#(5BjyzC(0z~Ug7@|5sWE4ykc?l^JDRB+_2Cs^{r6J+V~QP+;Va7tH=ykw4Xy^zI= zrF5eduae>=%9>XwYoVy_7E@hfrQ4) -#include -#include -#include -#include -#include -#include - -static char *input_path = NULL; -static char *output_path = NULL; -static char *output_dev = NULL; -static char **list_output_dev = NULL; -static char *cmd = NULL; -static FILE *aFile = NULL; - -void usage(char *name) -{ - printf("Usage: %s [-I ] [-O ]\n\n", name); - printf("Mandatory options:\n"); - printf("\t-I: filepath binary to copy\n"); - printf("\t-O: mountpoint(s) destination name.\n"); - printf("\t Could be a list (separated by','). Ex: \"NODE_1,NODE2,NODE_3\"\n"); -} - -void free_ressource() -{ - if(input_path) - free(input_path); - if(output_path) - free(output_path); - if(output_dev) - free(output_dev); - if(list_output_dev) - free(list_output_dev); - if(cmd) - free(cmd); - if(aFile) - endmntent(aFile); -} - -int main(int argc, char *argv[]) -{ - int c, i; - int ret = 0; - int device_found = 0; - struct mntent *ent = NULL; - char *p = NULL; - int n_output_dev = 0; - char scp_cmd[]="scp"; - - opterr = 0; - - while ((c = getopt (argc, argv, "I:O:")) != -1) - switch (c) - { - case 'I': - input_path = malloc(strlen(optarg)+1); - if(input_path != NULL) - strcpy(input_path, optarg); - break; - case 'O': - output_dev = malloc(strlen(optarg)+1); - if(output_dev != NULL) - strcpy(output_dev, optarg); - break; - case '?': - if ((optopt == 'I') || (optopt == 'O')) - fprintf (stderr, "Option -%c requires an argument.\n", optopt); - else if (isprint (optopt)) - fprintf (stderr, "Unknown option `-%c'.\n", optopt); - else - fprintf (stderr, - "Unknown option character `\\x%x'.\n", - optopt); - usage(argv[0]); - free_ressource(); - return EINVAL; - default: - abort (); - } - - if((input_path == NULL) || (output_dev == NULL)) - { - free_ressource(); - exit(ENOMEM); - } - - if (strlen(input_path) && strlen(output_dev)) - { - /* get the mounted devices list */ - aFile = setmntent("/proc/mounts", "r"); - if (aFile == NULL) { - perror("setmntent"); - free_ressource(); - exit(ENOENT); - } - - p = strtok (output_dev, ",\""); - - /* split output_dev and append tokens to list_output_dev */ - while (p) { - list_output_dev = realloc (list_output_dev, sizeof (char*) * ++n_output_dev); - - if (list_output_dev == NULL) - exit (ENOMEM); - - list_output_dev[n_output_dev-1] = p; - - p = strtok (NULL, ",\""); - } - - /* realloc one extra element for the last NULL */ - list_output_dev = realloc (list_output_dev, sizeof (char*) * (n_output_dev+1)); - list_output_dev[n_output_dev] = 0; - - /* now lets read the path of the device */ - while ((NULL != (ent = getmntent(aFile))) && (!device_found)) { - for (i = 0; (i < (n_output_dev)) && (!device_found); ++i) { - if (strstr(ent->mnt_dir, list_output_dev[i])) { - output_path = malloc(strlen(ent->mnt_dir)+1); - if(output_path != NULL) { - sprintf(output_path, "%s", ent->mnt_dir); - } else { - free_ressource(); - exit(ENOMEM); - } - device_found = 1; - } - } - } - - if(device_found) { - printf("copying %s to %s\n", input_path, output_path); - cmd = malloc(strlen(scp_cmd)+1+strlen(input_path)+1+strlen(output_path)+1); - if(cmd != NULL) { - sprintf(cmd, "%s %s %s", scp_cmd, input_path, output_path); - } else { - free_ressource(); - exit(ENOMEM); - } - ret = system(cmd); - - } else { - printf("%s not found. Please ensure the device is correctly connected\n", - output_dev); - ret = ENODEV; - } - } - else - { - printf("Missing argument\n"); - usage(argv[0]); - } - free_ressource(); - return ret; -} diff --git a/src/massStorageCopy/massStorageCopyMacOsX.c b/src/massStorageCopy/massStorageCopyMacOsX.c deleted file mode 100644 index a444cbbe..00000000 --- a/src/massStorageCopy/massStorageCopyMacOsX.c +++ /dev/null @@ -1,158 +0,0 @@ - -#include -#include -#include -#include -#include -#include -#include - -#define MAX_FS 128 - -static char *input_path = NULL; -static char *output_path = NULL; -static char *output_dev = NULL; -static char **list_output_dev = NULL; -static char *cmd = NULL; - - -void usage(char *name) -{ - printf("Usage: %s [-I ] [-O ]\n\n", name); - printf("Mandatory options:\n"); - printf("\t-I: filepath binary to copy\n"); - printf("\t-O: mountpoint(s) destination name.\n"); - printf("\t Could be a list (separated by','). Ex: \"NODE_1,NODE2,NODE_3\"\n"); -} - - -void free_ressource() -{ - if(input_path) - free(input_path); - if(output_path) - free(output_path); - if(output_dev) - free(output_dev); - if(list_output_dev) - free(list_output_dev); - if(cmd) - free(cmd); -} - -int main(int argc, char *argv[]) -{ - int c, i, n; - int ret = 0; - int device_found = 0; - struct statfs buf[MAX_FS]; - int fs_count; - char *p = NULL; - int n_output_dev = 0; - char scp_cmd[]="scp"; - - opterr = 0; - - while ((c = getopt (argc, argv, "I:O:")) != -1) { - switch (c) - { - case 'I': - input_path = malloc(strlen(optarg)+1); - if(input_path != NULL) - strcpy(input_path, optarg); - break; - case 'O': - output_dev = malloc(strlen(optarg)+1); - if(output_dev != NULL) - strcpy(output_dev, optarg); - break; - case '?': - if ((optopt == 'I') || (optopt == 'O')) - fprintf (stderr, "Option -%c requires an argument.\n", optopt); - else if (isprint (optopt)) - fprintf (stderr, "Unknown option `-%c'.\n", optopt); - else - fprintf (stderr, "Unknown option character `\\x%x'.\n", optopt); - usage(argv[0]); - free_ressource(); - return EINVAL; - default: - abort (); - } - } - - if((input_path == NULL) || (output_dev == NULL)) - { - free_ressource(); - exit(ENOMEM); - } - - if(strlen(input_path) && strlen(output_dev)) - { - /* get the mounted devices list */ - fs_count = getfsstat(NULL,0,MNT_WAIT); - if(fs_count < 0) { - perror("getfsstat"); - free_ressource(); - exit(ENOENT); - } - - getfsstat(buf,fs_count*sizeof(buf[0]),MNT_WAIT); - - /* " must be removed too */ - p = strtok (output_dev, ",\""); - - /* split output_dev and append tokens to list_output_dev */ - while (p) { - list_output_dev = realloc (list_output_dev, sizeof (char*) * ++n_output_dev); - - if (list_output_dev == NULL) - exit (ENOMEM); - - list_output_dev[n_output_dev-1] = p; - - p = strtok (NULL, ",\""); - } - - /* realloc one extra element for the last NULL */ - list_output_dev = realloc (list_output_dev, sizeof (char*) * (n_output_dev+1)); - list_output_dev[n_output_dev] = 0; - - for(n = 0; (n < fs_count) && (!device_found); n++) { - for(i = 0; (i < n_output_dev) && (!device_found); i++) { - if(strstr(buf[n].f_mntonname,list_output_dev[i])) { - output_path = malloc(strlen(buf[n].f_mntonname)+1); - if(output_path != NULL) { - sprintf(output_path, "%s", buf[n].f_mntonname); - } else { - free_ressource(); - exit(ENOMEM); - } - device_found = 1; - } - } - } - - if(device_found) { - printf("copying %s to %s\n", input_path, output_path); - cmd = malloc(strlen(scp_cmd)+1+strlen(input_path)+1+strlen(output_path)+1); - if(cmd != NULL) { - sprintf(cmd, "%s %s %s", scp_cmd, input_path, output_path); - } else { - free_ressource(); - exit(ENOMEM); - } - ret = system(cmd); - } else { - printf("%s not found. Please ensure the device is correctly connected\n", - output_dev); - ret = ENODEV; - } - } else { - printf("Missing argument\n"); - usage(argv[0]); - } - - free_ressource(); - return ret; -}