Compare commits
2 Commits
3cd89aea82
...
580a39d924
Author | SHA1 | Date | |
---|---|---|---|
|
580a39d924 | ||
|
c4a9481181 |
18
Makefile
Normal file
18
Makefile
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
include config.mk
|
||||||
|
|
||||||
|
.PHONY: all clean install uninstall
|
||||||
|
|
||||||
|
all: $(TARGET)
|
||||||
|
|
||||||
|
$(TARGET): $(TARGET).c
|
||||||
|
$(CC) $(CFLAGS) -o $(TARGET) $(TARGET).c
|
||||||
|
|
||||||
|
install: $(TARGET)
|
||||||
|
install -d $(DESTDIR)$(PREFIX)/bin
|
||||||
|
install -m 755 $(TARGET) $(DESTDIR)$(PREFIX)/bin
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
rm -f $(DESTDIR)$(PREFIX)/bin/$(TARGET)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(TARGET)
|
27
README.md
27
README.md
@ -1,3 +1,28 @@
|
|||||||
# slocc
|
# slocc
|
||||||
|
|
||||||
Sloc Counter for C
|
## What is slocc?
|
||||||
|
|
||||||
|
Slocc is just a little fun utility to count the lines of code that exist in a program.
|
||||||
|
In fact I use this fun utility for [pms](https://github.com/LearnixOS.com/pms) to count the sloc.
|
||||||
|
|
||||||
|
For people who are confused; sloc is a unit of measurement in coding and especially suckless software, standing for "Single Lines Of Code".
|
||||||
|
Sloc doesn't dictate how "bad" your code is, but it is a unit of measurement to help keep track of how messy your code could be.
|
||||||
|
It's generally a good idea to keep your sloc count low, **HOWEVER** never do it at the expense of performance/security.
|
||||||
|
|
||||||
|
## General installation
|
||||||
|
|
||||||
|
### Dependencies:
|
||||||
|
- C compiler (gcc or clang)
|
||||||
|
- C libraries (literally only uses stdio.h)
|
||||||
|
|
||||||
|
Both of these dependencies should already exist.
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
```bash
|
||||||
|
git clone https://git.based.pt/cowmonk/slocc.git
|
||||||
|
cd slocc
|
||||||
|
make
|
||||||
|
sudo/doas make install
|
||||||
|
```
|
||||||
|
NOTE: Please check config.mk if anything goes wrong in the installation, the default prefix is /usr/local/.
|
||||||
|
This is also considered FINISHED, only bugs/quality of life changes will be made.
|
||||||
|
20
config.mk
Normal file
20
config.mk
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# SLOCC - Sloc Counter
|
||||||
|
#
|
||||||
|
# Developer: cowmonk
|
||||||
|
# License: AGPL v3.0 (see License)
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
### Compiler Flags & default C compiler
|
||||||
|
|
||||||
|
# CFLAGS = -std=c99 -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700L -DVERSION=\"${VERSION}\" -s -pedantic -Wall -Os
|
||||||
|
CFLAGS = -std=c99 -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700L -DVERSION=\"${VERSION}\" -g -pedantic -Wall -Os
|
||||||
|
# INCLUDES =
|
||||||
|
# LDFLAGS =
|
||||||
|
CC=cc
|
||||||
|
|
||||||
|
### Install Directory
|
||||||
|
PREFIX=/usr
|
||||||
|
|
||||||
|
#### Target name
|
||||||
|
TARGET="slocc"
|
52
slocc.c
Normal file
52
slocc.c
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
if (argc != 2) {
|
||||||
|
printf("Usage: %s [file.c]\n", argv[0]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
FILE *file = fopen(argv[1], "r");
|
||||||
|
if (!file) {
|
||||||
|
printf("Error opening file\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
char line[1024];
|
||||||
|
int sloc = 0;
|
||||||
|
int in_multiline = 0;
|
||||||
|
|
||||||
|
while (fgets(line, sizeof(line), file)) {
|
||||||
|
char *p = line;
|
||||||
|
int has_code = 0;
|
||||||
|
|
||||||
|
while (*p) {
|
||||||
|
if (in_multiline) {
|
||||||
|
if (p[0] == '*' && p[1] == '/') {
|
||||||
|
in_multiline = 0;
|
||||||
|
p += 2;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (p[0] == '/' && p[1] == '*') {
|
||||||
|
in_multiline = 1;
|
||||||
|
p += 2;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (p[0] == '/' && p[1] == '/')
|
||||||
|
break;
|
||||||
|
if (p[0] != ' ' && p[0] != '\t' && p[0] != '\n' && p[0] != '\r') {
|
||||||
|
has_code = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (has_code && !in_multiline)
|
||||||
|
sloc++;
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(file);
|
||||||
|
printf("SLOC Count: %d\n", sloc);
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user