From b47726194f59bce87782af72faf9ad2f2edf1b34 Mon Sep 17 00:00:00 2001 From: hollorol Date: Wed, 31 Jul 2024 23:18:07 +0200 Subject: [PATCH] initial commit --- Makefile | 5 +++++ README.md | 8 ++++++++ j | Bin 0 -> 16800 bytes j.1 | 15 +++++++++++++++ main.c | 27 +++++++++++++++++++++++++++ 5 files changed, 55 insertions(+) create mode 100644 Makefile create mode 100644 README.md create mode 100755 j create mode 100644 j.1 create mode 100644 main.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..276bad5 --- /dev/null +++ b/Makefile @@ -0,0 +1,5 @@ +j: main.c + gcc -pedantic -Wall -Wextra main.c -o j +install: j j.1 + cp j $(HOME)/.local/bin/ + cp j.1 $(HOME)/.local/man/man1 diff --git a/README.md b/README.md new file mode 100644 index 0000000..c9a98c1 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +This is a simple program which can join lines from stdin. The program is +only 27 loc. I won\'t add features like pasting lines inside of a file. +You can do everything just using stdin/stdout. Another advantage of this +simple implementation that it does not use heap, only stack. This +reduces the chance of getting corrupted memory. Althought This program +provides better defaults (coma is the default separator), we sacrifice +the speed for input containing many line. For that purpoce: use paste +-sd, diff --git a/j b/j new file mode 100755 index 0000000000000000000000000000000000000000..187dcc3eb3a6b6094b70e236bbb49d6ec4906895 GIT binary patch literal 16800 zcmeHOZE#dq89uv9AW+x@3K&3TrJ%GWOM(ysEwY;rxN!nR8c=HCW|Q3{TQ|Fz-MclQ zV`BrIt{7}*?2JF`sN*>Gb8Kg9M@Ma8V5sQmfHPV~WsDsdmRf757U?Lg&wI{!H}~Fb z9QB9#2t-6Qi`#I2 zr+9~$4SklxRC+`Sq^dCJcgkvw2Ox>}HJ$F3Z`XD#xrQW(H&ZaELI^B{ZU^zIC_(FP z`7>P)mYiNLFGOU7ki3^=7a1V1wDYJc#d?`6id&tsN0&FECG$un-VM#Wp?NGPba^b< zpX3v|PV4;KvJGhzSduM;uFF=O;`2kKO_%p7Sg>T?2f@>>))xOWqVH`RgiBO3~2&+aEV7Z;_gc70ilYHS|l`NYqM2KL6d89 zV3XL<+0oK!ZU}D(ZxUul_f9jO$R-AoIV+Lv-r1VUq!Zn--W26AFqBE_JWOR;(GZoT z9`)-#syoH0e|_>9;Ev2MPojx_v5QO)_&Mcv_AFHRq<#(=4{1CSQR$4ceqo!!X)IB> z942hId>`qAq79$J#*mXXoXeo(8#bK!hy(W%W)DXQciJ^!~@8%h348j>7qaM&T7>?9yaccjtK3UEmty3r-pE2 z!*|9wf6H2o3@(RN2GymBepwFlN4GYDC-Up}8e?0}z)Bc}%hr73*j7LAVm+Ev9K`KR z)m-Sl1I%N2_2Wp~3y$%r*CxO&{Ae8jqwrjaNbRL{V-oOv616x=m@#$&9U^L;7mu}< zjAKi_Ni`ck+JK}Nek_ZBsrd9Q*eT2?yi^<^b*$(+bEJyQ*xV?bLF-orh4>zLq8NkO zA2!=~5f`uK1(Z1cB;_HgR~9h!-DG)e$;t|KSwTrhPvoC|k(L|9-`*^hWN~NV0rXe& zL!IMWAHExreI12gMfY|T-i&rf3xD5hjMonXzOVDnn=}TCIS`GLHv`s+#^2Pe6rF`P zIt#D26|O`}i+^W~o$?u*FXmsRvH6h$(FdXjq6ecUN)R+s#*q=(JF0u~RZV%RdpysxZRga2o%kR1Cy{lIdO#C)n&%n<9U5vO7;2KAH*C9nT zSo^5Ib-`@^HPlFPJ^^?T?KnW`Ey3E)`a6Pk#{=!b(Dzt@GMzxz>4~B(1|JaQd6K zN*Sr^O@_Spv3Zs>EAJ(2(CNH)@rx=M`^{CT({hQHEHq7sh(hQCG=&~{pIV>NzC{Xe zQ$iGVMHsKuI@kMxw&OjPT>jrmsy#@SruYgf+c&A(gKwx(XFp>(D)kFG{VlDR>#fWA zZwua6?k=}UZ;;)tpK@qj3DN81tt*s)q&!Lb3H0O0XuGsnKy*@DNR6Q3iv zznplr;C^=Ea|MqdCqAz{&YU<#wacHB9>CKWs)#QT!xiyh`MicR{~E#1uMbt z0kN=r4#1uoz)p3eqW$gV{nAeR#e&}hPJD@|G~NPYso?$6PJ2A15j&#d0Z}KKE8e z9%z;LbpJdEoXX|*v|`6b8i!{r`yCNugHaDsI281|G5l zI{vK0r;ncq@Ji<#_5iQNcrzl-%;o`KT~@QTweF3h(5yP`WgTAeBK zybK^5S~A-WorBS~N0>W0ceg}4&E4C#-`C!4c1K$}+bLIh%BC-umo?^NI+1_%gpEAT zT#r~Lq85^+94lDsyrU#K+qe=Tpj2^-JPd<%y=$i4#v`PI{DMF8&)`K zWae`T_-d+|92{a#(}|*r$Ap|mlpHk^;oPAiE7l8XWtAM{7|uE+ zvcn>r&RB`?Ksq1p%_ng(Eg9EPw56loiVX;vHWUiEJ*JNjnr1 zY1u?7Mg$!jPFW%>TNy?)JdlBEB}Q;gFI5J^PQPpr%4349O*if<$ z#b+$a8I_}s4#Sfoj0a)}*E1hSv?8?Jh)U?ZSMXf3mD5 z=OEBGH;OW!*BSeO(NvcCJWplG>m!)RptECD97K%PBFyLcEX$?ZlIzcQEI*2LTHCPB z^In!A&3D&d!{RU^u(`K7}vimqEd_*`0o5}!JNw1=8B9v^WRfOR7AT|atI-v$DXoK_hFr3k9Iu$ sAEGYh`t$pDE- +#include +#include + +#define MAX_LINE_LENGTH 200 + +int main(int argc, char** argv){ + char sep = ','; + if(argc > 1){ + sep = argv[1][0]; + } + + char line[MAX_LINE_LENGTH]; + fgets(line,MAX_LINE_LENGTH, stdin); + line[strlen(line)-1] = '\0'; + printf("%s",line); + + while(fgets(line,MAX_LINE_LENGTH, stdin) != NULL){ + line[strlen(line)-1] = '\0'; + printf("%c%s",sep,line); + } + + printf("\n"); + + + return 0; +}