commit 966c679efb5f1681e738a02f8cc695d61bd2996a
Author: Tony Bark <35226681+tonytins@users.noreply.github.com>
Date: Sun Jul 31 09:30:19 2022 -0400
first commit
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4f42a74
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,273 @@
+# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig
+# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,macos,c,c++,cmake,linux,qt,qtcreator,windows
+# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode,macos,c,c++,cmake,linux,qt,qtcreator,windows
+
+### C ###
+# Prerequisites
+*.d
+
+# Object files
+*.o
+*.ko
+*.obj
+*.elf
+
+# Linker output
+*.ilk
+*.map
+*.exp
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Libraries
+*.lib
+*.a
+*.la
+*.lo
+
+# Shared objects (inc. Windows DLLs)
+*.dll
+*.so
+*.so.*
+*.dylib
+
+# Executables
+*.exe
+*.out
+*.app
+*.i*86
+*.x86_64
+*.hex
+
+# Debug files
+*.dSYM/
+*.su
+*.idb
+*.pdb
+
+# Kernel Module Compile Results
+*.mod*
+*.cmd
+.tmp_versions/
+modules.order
+Module.symvers
+Mkfile.old
+dkms.conf
+
+### C++ ###
+# Prerequisites
+
+# Compiled Object files
+*.slo
+
+# Precompiled Headers
+
+# Compiled Dynamic libraries
+
+# Fortran module files
+*.mod
+*.smod
+
+# Compiled Static libraries
+*.lai
+
+# Executables
+
+### CMake ###
+CMakeLists.txt.user
+CMakeCache.txt
+CMakeFiles
+CMakeScripts
+Testing
+Makefile
+cmake_install.cmake
+install_manifest.txt
+compile_commands.json
+CTestTestfile.cmake
+_deps
+
+### CMake Patch ###
+# External projects
+*-prefix/
+
+### Linux ###
+*~
+
+# temporary files which can be created if a process still has a handle open of a deleted file
+.fuse_hidden*
+
+# KDE directory preferences
+.directory
+
+# Linux trash folder which might appear on any partition or disk
+.Trash-*
+
+# .nfs files are created when an open file is removed but is still being accessed
+.nfs*
+
+### macOS ###
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+### macOS Patch ###
+# iCloud generated files
+*.icloud
+
+### Qt ###
+# C++ objects and libs
+
+# Qt-es
+object_script.*.Release
+object_script.*.Debug
+*_plugin_import.cpp
+/.qmake.cache
+/.qmake.stash
+*.pro.user
+*.pro.user.*
+*.qbs.user
+*.qbs.user.*
+*.moc
+moc_*.cpp
+moc_*.h
+qrc_*.cpp
+ui_*.h
+*.qmlc
+*.jsc
+Makefile*
+*build-*
+*.qm
+*.prl
+
+# Qt unit tests
+target_wrapper.*
+
+# QtCreator
+*.autosave
+
+# QtCreator Qml
+*.qmlproject.user
+*.qmlproject.user.*
+
+# QtCreator CMake
+CMakeLists.txt.user*
+
+# QtCreator 4.8< compilation database
+
+# QtCreator local machine specific files for imported projects
+*creator.user*
+
+*_qmlcache.qrc
+
+### QtCreator ###
+# gitignore for Qt Creator like IDE for pure C/C++ project without Qt
+#
+# Reference: http://doc.qt.io/qtcreator/creator-project-generic.html
+
+
+
+# Qt Creator autogenerated files
+
+
+# A listing of all the files included in the project
+*.files
+
+# Include directories
+*.includes
+
+# Project configuration settings like predefined Macros
+*.config
+
+# Qt Creator settings
+*.creator
+
+# User project settings
+*.creator.user*
+
+# Qt Creator backups
+
+# Flags for Clang Code Model
+*.cxxflags
+*.cflags
+
+
+### VisualStudioCode ###
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+!.vscode/*.code-snippets
+
+# Local History for Visual Studio Code
+.history/
+
+# Built Visual Studio Code Extensions
+*.vsix
+
+### VisualStudioCode Patch ###
+# Ignore all local history of files
+.history
+.ionide
+
+# Support for Project snippet scope
+.vscode/*.code-snippets
+
+# Ignore code-workspaces
+*.code-workspace
+
+### Windows ###
+# Windows thumbnail cache files
+Thumbs.db
+Thumbs.db:encryptable
+ehthumbs.db
+ehthumbs_vista.db
+
+# Dump file
+*.stackdump
+
+# Folder config file
+[Dd]esktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,macos,c,c++,cmake,linux,qt,qtcreator,windows
+
+# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option)
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..82321e8
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,29 @@
+BSD 3-Clause License
+
+Copyright (c) 2022, Tony Bark
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9795aec
--- /dev/null
+++ b/README.md
@@ -0,0 +1,7 @@
+# C Practice
+
+This is some really *old* C code that I wrote with a friend when I was still figuring what programming language best suited me. I'm providing this as is for the sake archiving.
+
+## License
+
+This archive is dual-licensed under the [BSD-3-Clause](COPYING) or the [UNLICENSE](UNLICENSE).
diff --git a/UNLICENSE b/UNLICENSE
new file mode 100644
index 0000000..00d2e13
--- /dev/null
+++ b/UNLICENSE
@@ -0,0 +1,24 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to
\ No newline at end of file
diff --git a/hello-world-qt.c b/hello-world-qt.c
new file mode 100644
index 0000000..8e2b34e
--- /dev/null
+++ b/hello-world-qt.c
@@ -0,0 +1,12 @@
+#include
+#include
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+ QLabel label("Hello, world!");
+ label.show();
+
+ return app.exec();
+}
+
diff --git a/hello-world.c b/hello-world.c
new file mode 100644
index 0000000..b3f3e8f
--- /dev/null
+++ b/hello-world.c
@@ -0,0 +1,12 @@
+#include
+
+int main(int argc, char **argv)
+{
+ char initial;
+
+ printf("Please enter the following info:");
+ scanf("%c", &initial); // scanf("Initial i%". i%)
+ print("Your initials are %i");
+
+ return 0;
+}
diff --git a/nightwish/pointers-rewrite.c b/nightwish/pointers-rewrite.c
new file mode 100644
index 0000000..ec85c60
--- /dev/null
+++ b/nightwish/pointers-rewrite.c
@@ -0,0 +1,144 @@
+/*
+
+ Here, i will attempt to show you some simple concepts of 'pointers'
+ Including a few common uses, as well as the differences
+ between a dereference and a reference pass...
+
+*/
+
+/* standard include file for IO.... */
+
+#include
+#include
+
+
+/* Main function */
+
+int main ( int argc, char * argv[] )
+
+/*
+ The above is a stack pointer, it's placed on the current
+ execution space of the program (the memory is allocated at startup).
+ There's no heap used here and thus we don't 'free' any memory.
+ argv[] is a string constant,
+ it's the command line passed to the program
+ on startup. Where [0] is the actual executable name
+*/
+
+{
+
+ /* Now, let's make a pointer! */
+
+ char *FirstPointer; /* This is a 'stack pointer' */
+
+/*
+
+ Remember that the above IS a pointer, but it's an stack-space
+ one. Meaning it's allocated at startup.
+
+ The stack can only be a certian size, if all the data
+ won't fit on it, it may get cut off or give
+ undefined behaviour. So let's convert our 'stack' to a
+ 'heap pointer below
+*/
+
+ FirstPointer = (char *) malloc(sizeof(char) * 200000);
+
+/*
+ OK! Now we have a nice, BIG space in the 'heap' (the rest of the
+ system's RAM that's not beeing used by a program). We'll just
+ work with data under 200000 bytes long for now so as not to cause
+ a memory leak. So, what shal we -do- with our baby? Hmm, i have
+ an idea.....
+*/
+
+ *FirstPointer = (char *)"Hello There, i belong on the heap!\n";
+
+/* Let's make it say something for us!
+ The trick here is the asterisk (*) will 'dereference' the pointer.
+ When we dereference a pointer, we no longer worry about the
+ memory address, we worry about, and work with the DATA!
+ If we work by REFERENCE we are working with the ADDRESS!
+ The &-sign is the reference operator, we'll work with that soon.
+*/
+
+ /* Let's put something on screen... */
+
+ printf("%s", FirstPointer);
+
+/* Ok, we have text-on-screen action! Sexy! Now, let's make another
+ pointer, here's where reference play comes in!
+*/
+
+ char *SecondPointer; /* Another char (byte) pointer, to match types with the first one. */
+
+/* Now let's see what happens if we do the following.... */
+
+ SecondPointer = (char *)&FirstPointer;
+
+/* We passed the ADDRESS of the 'FirstPointer' (our heap pointer)
+ to our second, which can accept the address, let's print the
+ second one to the screen!
+*/
+
+ printf("%s", SecondPointer);
+
+/* Sweet, more screen action! Now let's do something a bit odd....
+*/
+
+ char *ThirdPointer; /* Wow this crap is becomming common.... */
+
+ ThirdPointer = (char *) *SecondPointer;
+
+/* Hmm, interesting... We have just copied the data from the FIRST
+ pointer to the third! But how???
+
+ It's simple, when we did the address assign (&FirstPointer)
+ earlier in the code, it placed the address in SecondPointer.
+ That links SecondPointer and FirstPointer together! They can share
+ data now. ThirdPointer now equals the data of second pointer,
+ which by address points to first pointer, so we have a circle.
+
+ Let's see it in action.....
+*/
+
+ printf("%s", ThirdPointer);
+
+/* Yay, more output, But what happens if we do something like this?
+*/
+
+ printf("%s %s %s", &FirstPointer, &SecondPointer, &ThirdPointer);
+
+/* Well, what'cha know? We have the addresses on screen of all
+ three pointers! Two of them (first and second) should be the same
+ While third should be different.....
+
+ Reason for third beeing different???
+
+ We didn't assign it ANY Address, ONLY data!
+
+ Ok, we have worked with our pointers and are all done....
+ What do we do now? THat funny malloc() stuff did something
+ right? Yes it did! It told the kernel of the OS to allocate
+ some of the computer's RAM so we could put stuff in it.
+ Now we need to be nice to the OS and our computer and
+ give the RAM back with free(). Free() tells the kernel
+ 'We're done, you can have this back now'. If a program with an
+ malloc() ends without a free() to release, you have a memory leak.
+
+ A memory leak is when RAM is allocated and not freed once the
+ stack is destroyed (main returns and exits). The RAM is still
+ there and possibly usable, but it hasn't been set back to
+ zero-byte yet. So to be nice let's free......
+*/
+
+ free(FirstPointer); /* Done, no mem leaks now! */
+
+ /* And a nice return to let the kernel know we're all done */
+
+ return 0;
+
+}
+
+
+
diff --git a/nightwish/printself.c b/nightwish/printself.c
new file mode 100644
index 0000000..5b24da7
--- /dev/null
+++ b/nightwish/printself.c
@@ -0,0 +1,34 @@
+#include
+#include
+
+int main( void )
+{
+
+ FILE *source;
+
+ source = fopen("printself.c", "r");
+
+ long file_size;
+
+ fseek(source, 0, SEEK_END);
+
+ file_size = ftell(source);
+
+ rewind(source);
+
+ char *filedata;
+
+ filedata = (char*) malloc(sizeof(char) * file_size);
+
+ fread(filedata, 1, file_size, source);
+
+ fclose(source);
+
+ printf("%s\n", filedata);
+
+ free(filedata);
+
+ getchar();
+
+ return 0;
+}
diff --git a/nightwish/recurse.c b/nightwish/recurse.c
new file mode 100644
index 0000000..b9de9fa
--- /dev/null
+++ b/nightwish/recurse.c
@@ -0,0 +1,16 @@
+#include
+
+void Recurse( int number )
+{
+
+ printf("Call #: %d\n", number);
+ Recurse(number+1);
+}
+
+int main( void )
+{
+
+ Recurse(1);
+
+ return 0;
+}
diff --git a/tax-owe-app-hw.c b/tax-owe-app-hw.c
new file mode 100644
index 0000000..7fa6d29
--- /dev/null
+++ b/tax-owe-app-hw.c
@@ -0,0 +1,14 @@
+#include
+
+// This application is purely for study purposes.
+
+int main(int argc, char **argv)
+{
+ char name[100];
+
+ printf("Tell me your name.\n");
+ scanf("%s", name);
+ printf("Welcome, %s!\n", name);
+
+ return 0;
+}