In the #shell #functions I should have written years ago category...

function fedilinktousername { grep -oE 'https?://[^/]+/@[^/ ]+' |sed -E 's|https?://|@|; s|/@|@|; s/(@[^@]*)(@[^@]*)/\2\1/' } function fediusernametolink { grep -oE '(@[^@ ]+){2}' |sed -E 's|(@[^@ ]+)@([^@ ]+)|https://\2/\1|' } rld@Intrepid:~$ clipo https://polymaths.social/@rl_dane/statuses/01KVJCAG6Y4C1KTGBDBECH2778 rld@Intrepid:~$ clipo |fedilinktousername @[email protected] rld@Intrepid:~$ clipo |fedilinktousername |fediusernametolink https://polymaths.social/@rl_dane rld@Intrepid:~$

#UnixShell #ShellScripting #Unix #bash #ksh

[Beginner] Call all functions from main() or jump to functions from within functions?

Context\
I have been learning C as a hobby since autum 2025 because I am intrigued by computers. I have mainly been using Bro Code’s tutorial and PDF The C Programming Language (Second Edition), although I’m too much of a beginner to understand all of the latter material. There’s not really much more to it. I don’t really have any concrete goals with learning C, but I thought it could be a good first step into the world of programming and for now, I just really enjoy coding. In the future, I’d like to learn assembly language and then finally (?) program some CPU.

Background\
When I realized how I can use for loops to go through strings and how I can then manipulate certain portions of said string, I realized that I can play around with it to allow a user to modify (here, “trim") any given text. Good fun!

In this particular case, I focused on practicing separating the program into as specific and small functions as possible.

Questions\
1) Should I or could I call the next function from within the previously called function, as opposed to listing them all in main() as I have done below? My guess is that listing them all in main() gives the reader a better overview of the flow, as opposed to having to look into each separate function to find out what’s connecting to what?

2) I believe that the only variable that really needs to be global is the “input”, since so many functions need to be able to access it. What are the pros and cons of using local variables where possible?

CODE #include <stdio.h> #include <string.h> //Function declarations void promptchoice_main(void); void promptchoice_main_again(void); void promptinput(void); void promptchoice_trim(void); void executechoice(char choice_trim); void trimnumbers(void); void trimwhitespace(void); void trimletters(void); void trimspecial(void); void specifyspecial(void); void printresult(char input[]); //Global variables char choice_main = 0x00; char choice_trim = 0x00; char choice_detail = 0x00; char choice_special = 0x00; char input[1000] = ""; char previous_input[1000] = ""; //Remove specific numbers, letters, punctuation or whitespace characters from input. int main() { printf("\nWelcome! This program trims text by removing unwanted characters.\n"); while (1) { if (strlen(previous_input) == 0) { // Check for previously trimmed text in memory. promptchoice_main(); if (choice_main == 'E') { break; } if (choice_main == 'T') { promptinput(); promptchoice_trim(); executechoice(choice_trim); printresult(input); } } else { promptchoice_main_again(); if (choice_main == 'E') { break; } if (choice_main == 'T') { promptinput(); promptchoice_trim(); executechoice(choice_trim); printresult(input); } else if (choice_main == 'P') { sprintf(input, "%s", previous_input); printf("\nYou are trimming previously trimmed text: %s\n", input); promptchoice_trim(); executechoice(choice_trim); printresult(input); } } } printf("\nGoodbye!\n"); return 0; } //Function definitions void promptchoice_main(void) { while (1) { printf("\nPress T and ENTER to trim text or E and ENTER to exit: "); scanf("%c", &choice_main); while (getchar() != '\n') {} if (choice_main == 'T' || choice_main == 'E') { break; } else { printf("\nInvalid input!\n"); } } return; } void promptchoice_main_again(void) { while (1) { printf("\nPress T and ENTER to trim new text, P and ENTER to trim previously trimmed text or E and ENTER to exit: "); scanf("%c", &choice_main); while (getchar() != '\n') {} if (choice_main == 'T' || choice_main == 'P' || choice_main == 'E') { break; } else { printf("\nInvalid input!\n"); } } return; } void promptinput(void) { printf("\nEnter the text that you would like to trim and press ENTER: "); fgets(input, sizeof input, stdin); input[strlen(input) - 1] = '\0'; return; } void promptchoice_trim(void) { while (1) { printf("\nWhat would you like to trim?\n1) Numbers (1, 2, 3...)\n2) Whitespace (space, tab or newline) \n3) Letters (A,B,C... a,b,c...)\n4) Special characters (!,?, . , ...)\nType one of the above numbers and press ENTER: "); scanf("%c", &choice_trim); while (getchar() != '\n') {} if (choice_trim >= 0x31 && choice_trim <= 0x34) { break; } // Only accept 1 through 4. else { printf("\nInvalid choice!\n"); } } return; } void executechoice(char choice_trim) { switch (choice_trim) { case 0x31: trimnumbers(); // 123 etc break; case 0x32: trimwhitespace(); // space, tab, newline break; case 0x33: trimletters(); // ABC..., abc... break; case 0x34: trimspecial(); // ! ? , . etc. break; } return; } void trimnumbers(void) { int n = 0; for (n = strlen(input) - 1; n >= 0; n--) { if (input[n] >= 0x30 && input[n] <= 0x39) { input[n] = 0x18; } } return; } void trimwhitespace(void) { while (1) { printf("\nType S to trim SPACE, T to trim TAB, N to trim NEWLINE or A to trim all whitespace: "); scanf("%c", &choice_detail); while (getchar() != '\n') {} if (choice_detail == 'S' || choice_detail == 'T' || choice_detail == 'A') { break; } else { printf("\nInvalid input!\n"); } } int n = 0; for (n = strlen(input) - 1; n >= 0; n--) { if (choice_detail == 'S') { if (input[n] == 0x20) { input[n] = 0x18; } } // space else if (choice_detail == 'T') { if (input[n] == 0x09) { input[n] = 0x18; } } // tab else if (choice_detail == 'N') { if (input[n] == 0x0A) { input[n] = 0x18; } } // newline else if (choice_detail == 'A') { if (input[n] == 0x20 || input[n] == 0x09 || input[n] == 0x0A) { input[n] = 0x18; } } } return; } void trimletters(void) { while (1) { printf("\nType U to trim uppercase letters, L to trim lowercase letters or A to trim all letters: "); scanf("%c", &choice_detail); while (getchar() != '\n') {} if (choice_detail == 'U' || choice_detail == 'L' || choice_detail == 'A') { break; } else { printf("\nInvalid input!\n"); } } int n = 0; for (n = strlen(input) - 1; n >= 0; n--) { if (choice_detail == 'U') { if (input[n] >= 0x41 && input[n] <= 0x5A) { input[n] = 0x18; } } // Uppercase else if (choice_detail == 'L') { if (input[n] >= 0x61 && input[n] <= 0x7A ) { input[n] = 0x18; } } // Lowercase else if (choice_detail == 'A') { if (input[n] >= 0x41 && input[n] <= 0x5A || input[n] >= 0x61 && input[n] <= 0x7A ) { input[n] = 0x18; } } } return; } void trimspecial(void) { while (1) { printf("\nType A to trim all special characters or S to specify which character to remove: "); scanf("%c", &choice_detail); while (getchar() != '\n') {} if (choice_detail == 'A' || choice_detail == 'S') { break; } else { printf("\nInvalid input!\n"); } } int n = 0; for (n = strlen(input) - 1; n >= 0; n--) { if (choice_detail == 'A') { if (input[n] >= 0x21 && input[n] <= 0x2F || input[n] >= 0x3A && input[n] <= 0x40 || input[n] >= 0x5B && input[n] <= 0x60 || input[n] >= 0x7B && input[n] <= 0x7E) { input[n] = 0x18; } } // All whitespace } if (choice_detail == 'S') { specifyspecial(); } // Let user specify character. return; } void specifyspecial(void) { while (1) { printf("\nEnter special character to trim and press ENTER: "); scanf("%c", &choice_special); while (getchar() != '\n') {} if (choice_special >= 0x21 && choice_special <= 0x2F || choice_special >= 0x3A && choice_special <= 0x40 || choice_special >= 0x5B && choice_special <= 0x60 || choice_special >= 0x7B && choice_special <= 0x7E) { break; } else { printf("\nNot a special character!\n"); } } int n = 0; for (n = strlen(input) - 1; n >= 0; n--) { if (input[n] == choice_special) { input[n] = 0x18; } } return; } void printresult(char input[]) { printf("\nTrimmed text:\n\n%s\n", input); sprintf(previous_input, "%s", input); // Save trimmed text for reuse. return; } //TODO //Create error handling when trimming non existing characters. //Replace characters (uppercase/lowercase, user selected, etc).

What’s !important #13: “@ function”, “alpha()”, CSS Wordle, and More, by @dxnny.fun (@csstricks):

https://css-tricks.com/whats-important-13/?ref=frontenddogma.com

#css #retrospectives #functions #layout #webplatform

What’s !important #13: @function, alpha(), CSS Wordle, and More | CSS-Tricks

CSS functions, the alpha() function, Grid Lanes, some things about Dialog that you might not know, CSS Wordle, and more — this is What’s !important right now.

CSS-Tricks
Volker Geyer, head of the German civil servants' union, criticized top politicians in the governing coalition for engaging in populism. Speaking to "Die Welt am... https://news.osna.fm/?p=50738 | #news #accused #bureaucracy #criticisms #functions
Union and SPD Grilled: Bureaucracy Criticisms Accused of Populism and Misunderstanding State Functions - Osna.FM

Civil Service Head Volker Geyer accuses 'black-red' government leaders, including Bas and Linnemann, of dangerous populism.

Osna.FM
Miasma Worm Hits Microsoft GitHub Supply Chain Repos

The self-replicating Miasma supply chain attack has impacted Microsoft repositories on GitHub — according to researchers, 73 repositories in four

CyberSecureFox

🌟 Tuesday, June 2, 2026 🌟

Day 152 of Year 3
Day 883 overall since January 1, 2024 🚀

💻 Today's Focus

As a Code in Place 6 Volunteer Section Leader, I created a Python Wish Wall project that combined multiple concepts taught throughout the course. It was a fun way to demonstrate how functions, user input, variables, and program structure can come together to build something meaningful and interactive. 🐍

#Python #CodeInPlace #Programming #ComputerScience #PythonProgramming #Functions

Where do I find the code of standardized functions?

For instance, I wanted to see how printf is written. I looked into the stdio.h file, but there, I could only find the function declaration, no definition.

"Ever wonder how exactly a public library works?

o Who decides what items to be added to the holdings?
o How are acquisitions funded?
o What's the process for creating events or services?

Read on to gain a better understanding of how your library works." https://action.everylibrary.org/it_s_called_a_public_library_here_s_how_it_works #Library #Libraries #Services #InnerWorkings #BehindTheScenes #ModusOperandi #DailyOperations #DecisionMaking #Functions #HowLibrariesFunction

🔵🟠 The Fundamentals and Dev Experience of CSS @ function
by @JaneOri
at @frontendmasters.com
#CSS has introduced #functions so authors can encapsulate and reuse property behaviors across their style sheets...
https://frontendmasters.com/blog/the-fundamentals-and-dev-experience-of-css-function/
Nvidia unveils new superchip to bring AI functions into personal computers
Nvidia has unveiled a powerful chip that would bring advanced artificial intelligence functions into laptops and desktop computers, with new personal computer models from brands including Microsoft and Dell set to roll out later this year.
https://www.cbc.ca/news/business/nvidia-ai-personal-computer-9.7218820?cmp=rss