Simple Excel engine without any UI

Overview

Minicel

The idea is to implement a batch program that can accept a CSV file that looks like this:

A      | B
1      | 2
3      | 4
=A1+B1 | =A2+B2

And outputs:

A      | B
1      | 2
3      | 4
3      | 7

Basically a simple Excel engine without any UI.

Quick Start

The project is using nobuild build system.

$ cc -o nobuild nobuild.c
$ ./nobuild
$ ./minicel input.csv
Issues
  • (#11) Fix remaining valgrind errors

    (#11) Fix remaining valgrind errors

    Close #11

    The issue was UB. AFAIK, the computation of the LHS and RHS in an assignment operator is unsequenced, so putting expr_buffer_at on both sides while calling move_expr_in_dir was generating UB. Judging from the valgrind output, gcc probably evaluated the LHS, followed by the argument, then the function, which caused the invalid write since the LHS became invalid. Clang might have done the reverse (RHS then LHS), so no error there.

    opened by zhiayang 1
  • Invalid reads in valgrind on `csv/stress-copy.csv`

    Invalid reads in valgrind on `csv/stress-copy.csv`

    Steps to reproduce

    Introduced in #10

    1. $ ./nobuild
    2. $ valgrind ./minicel ./csv/stress-copy.csv

    Observed

    Valgrind reporting invalid reads from Expr Buffer

    Expected

    No valgrind errors

    opened by rexim 0
  • The operator precedence is wrong. 1-2+3  should be equal to 3+1-2

    The operator precedence is wrong. 1-2+3 should be equal to 3+1-2

    the operator precedence is wrong. 1-2+3 should be equal to 3+1-2 but at the moment it is not (it is interpreted as 1-(2+3)).

    example.csv:

    =3+1-2|=1-2+3

    should have the same output, instead output is:

    2.000000|-4.000000

    opened by ManuLinares 0
Owner
Tsoding
Recreational Programming
Tsoding
TulipCell is an Excel add-in providing 100+ technical analysis indicators.

Tulip Cell Introduction Tulip Cell is an Excel add-in that provides the technical analysis functions from the Tulip Indicators library. Building Build

Tulip Charts LLC 26 Jan 8, 2022
Loads a signed kernel driver which allows you to map any driver to kernel mode without any traces of the signed / mapped driver.

CosMapper Loads a signed kernel driver (signed with leaked cert) which allows you to map any driver to kernel mode without any traces of the signed /

null 118 Jul 26, 2022
Automatically load dlls into any executables without replacing any files!

Automatically loaded dll using xinput9_1_0 proxy. Please put the modified xinput9_1_0.dll in the executable's directory.

null 11 Apr 17, 2022
A light-weight Flutter Engine Embedder based on HADK ,which for Android devices that runs without any java code

flutter-hadk A light-weight Flutter Engine Embedder based on HADK ,which for Android devices that runs without any java code 1.Build by android-ndk-to

null 12 Jun 15, 2022
Poc to test my little friend features without any sdk

poc.vic-hack POC to test my little friend "vector" features without any sdk Ultimate goal - being able to write own firmware components without propri

Oleg Lytvynenko 8 Feb 26, 2022
Cobalt Strike Beacon Object File (BOF) that uses handwritten shellcode to return the process Environment strings without touching any DLL's.

Cobalt Strike "Where Am I?" Beacon Object File Cobalt Strike Beacon Object File (BOF) that uses handwritten shellcode to return the process Environmen

Bobby Cooke 86 Jul 27, 2022
std::tuple like methods for user defined types without any macro or boilerplate code

Boost.PFR This is a C++14 library for very basic reflection that gives you access to structure elements by index and provides other std::tuple like me

Boost.org 1k Aug 7, 2022
Create a calculator of any kind in any language, create a pr.

calculators Create a calculator of any kind in any language, create a pr. Create a calculator of any type using the programming language of your choic

Akshay Gautam 2 Dec 1, 2021
A simple library that helps Android developers to execute JavaScript code from Android native side easily without using Webview.

AndroidJSModule A simple library that helps Android developers to execute JavaScript code from Android native side easily without using Webview. Insta

Hung Nguyen 5 May 24, 2022
Simple one file header for hijacking windows version.dll for desired executable to do 3rd party modifying without dll injection.

Version-Hijack Simple one file header for hijacking windows version.dll for desired executable to do 3rd party modifying without dll injection. Usage

sneakyevil 5 Mar 31, 2022
A simple, lightweight Python 2.7 interpreter, with predictable memory management and without global locks.

libPyVM is a compact Python 2.7 interpreter that can be used in various places where the standard CPython interpreter is not appropriate or cumbersome

null 9 May 19, 2021
A simple version of getch() for C without the use of conio.h

getch() A simple version of getch() for C without the use of conio.h. The code is based on the example of Kermi3. It has been modified so that it is p

Angmar3019 1 Jun 8, 2022
OpenGL Template Engine - a C++ OpenGL graphics engine which aimed to be a simple startup template for 3D OpenGL projects.

OpenGL Template Engine is a C++ OpenGL graphics engine which aimed to be a simple startup template for 3D OpenGL projects. This is the template I personally use for my own projects and provides me with the general OpenGL 3D render setup with model import and UI.

Marcus Nesse Madland 2 May 16, 2022
This is a simple filter that will block any attempt to access streams beginning with

Triggering the notification only requires that you visit a particular path on an NTFS volume.

OSR Open Systems Resources, Inc. 72 Jul 11, 2022
Any - A simple variant type for C++

ANY Variant type for C++ This is similar to Boost.Any in that any type can be encapsulated and retrieved, but this implementation does not have any de

Paul Howes 9 Oct 24, 2020
Turn your ESP32 into a easy to use micro web-server allowing to interact with any GPIO by simple http(s) calls.

WebhooksTriggeredESP32WiFi Turn your ESP32 into an easy to use and manage wireless micro web-server allowing it to process reliably and asynchronouly

JayDeLux 4 Jun 1, 2022
LiteX is a Migen/MiSoC based Core/SoC builder that provides the infrastructure to easily create Cores/SoCs (with or without CPU).

LiteX is a Migen/MiSoC based Core/SoC builder that provides the infrastructure to easily create Cores/SoCs (with or without CPU). The common components of a SoC are provided directly: Buses and Streams (Wishbone, AXI, Avalon-ST), Interconnect, Common cores (RAM, ROM, Timer, UART, etc...), CPU wrappers/integration, etc... and SoC creation capabilities can be greatly extended with the ecosystem of LiteX cores (DRAM, PCIe, Ethernet, SATA, etc...) that can be integrated/simulated/build easily with LiteX.

null 1.7k Jul 30, 2022
Audacity fork without Telemetry and with new features

Audacity fork without Telemetry and with new features

Sartox Free Software 663 Jul 30, 2022