Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 9205 → Rev 9207

/programs/develop/ktcc/trunk/bin/lib/libshell.a
Cannot display: file marked as a binary type.
svn:mime-type = application/x-archive
Property changes:
Added: svn:mime-type
+application/x-archive
\ No newline at end of property
/programs/develop/ktcc/trunk/lib/libshell/Makefile
0,0 → 1,26
CC = kos32-tcc
AR = ar
CFLAGS = -c -I../../libc.obj/include
 
LIB = libshell.a
 
OBJS = \
shell_exit.o \
shell_puts.o \
shell_get_pid.o \
shell_ping.o \
shell_getc.o \
shell_cls.o \
shell_init.o \
shell_gets.o \
shell_printf.o \
shell_putc.o
 
$(LIB): $(OBJS)
$(AR) -crs $@ $(OBJS)
%.o : %.c Makefile
$(CC) $(CFLAGS) -o $@ $<
 
clean:
rm -rf $(OBJS) $(LIB)
/programs/develop/ktcc/trunk/lib/libshell/compile_flags.txt
0,0 → 1,0
-I../../libc.obj/include
/programs/develop/ktcc/trunk/lib/libshell/shell_cls.c
0,0 → 1,8
#include <shell_api.h>
 
void shell_cls()
{
__shell_init();
*__shell_shm = SHELL_CLS;
__SHELL_WAIT();
}
/programs/develop/ktcc/trunk/lib/libshell/shell_exit.c
0,0 → 1,11
#include <shell_api.h>
#include <sys/ksys.h>
 
void shell_exit()
{
if(__shell_is_init){
*__shell_shm = SHELL_EXIT;
__SHELL_WAIT();
_ksys_shm_close(__shell_shm_name);
}
}
/programs/develop/ktcc/trunk/lib/libshell/shell_get_pid.c
0,0 → 1,12
#include <shell_api.h>
#include <string.h>
 
unsigned shell_get_pid()
{
unsigned pid;
__shell_init();
*__shell_shm = SHELL_PID;
__SHELL_WAIT();
memcpy(&pid, __shell_shm+1, sizeof(unsigned));
return pid;
}
/programs/develop/ktcc/trunk/lib/libshell/shell_getc.c
0,0 → 1,9
#include "shell_api.h"
 
char shell_getc()
{
__shell_init();
*__shell_shm = SHELL_GETC;
__SHELL_WAIT();
return *(__shell_shm+1);
}
/programs/develop/ktcc/trunk/lib/libshell/shell_gets.c
0,0 → 1,10
#include <shell_api.h>
#include <string.h>
 
void shell_gets(char *str, int n)
{
__shell_init();
*__shell_shm = SHELL_GETS;
__SHELL_WAIT();
strncpy(str, __shell_shm+1, n);
}
/programs/develop/ktcc/trunk/lib/libshell/shell_init.c
0,0 → 1,44
#include <sys/ksys.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <shell_api.h>
 
char app_name[13];
char __shell_shm_name[32];
char*__shell_shm=NULL;
int __shell_is_init=0;
 
int __shell_shm_init()
{
__shell_is_init=1;
ksys_thread_t *proc_info = (ksys_thread_t*)malloc(sizeof(ksys_thread_t));
if(proc_info == NULL){
return -1;
}
unsigned PID;
 
_ksys_thread_info(proc_info, -1);
PID = proc_info->pid;
strncpy(app_name, proc_info->name, 12);
free(proc_info);
 
itoa(PID, __shell_shm_name);
strcat(__shell_shm_name, "-SHELL");
return _ksys_shm_open(__shell_shm_name, KSYS_SHM_OPEN_ALWAYS | KSYS_SHM_WRITE, SHELL_SHM_MAX, &__shell_shm);
}
 
void __shell_init()
{
if(!__shell_is_init){
if(__shell_shm_init()){
debug_printf("%s: shell problems detected!\n", app_name);
_ksys_exit();
}
 
if(!shell_ping()){
debug_printf("%s: no shell found!\n", app_name);
_ksys_exit();
}
}
}
/programs/develop/ktcc/trunk/lib/libshell/shell_ping.c
0,0 → 1,13
#include <shell_api.h>
#include <sys/ksys.h>
 
int shell_ping()
{
__shell_init();
*__shell_shm = SHELL_PING;
_ksys_delay(10);
if(*__shell_shm==SHELL_OK){
return 1;
}
return 0;
}
/programs/develop/ktcc/trunk/lib/libshell/shell_printf.c
0,0 → 1,12
#include <shell_api.h>
#include <stdio.h>
 
void shell_printf(const char *format,...)
{
va_list ap;
va_start (ap, format);
*__shell_shm=SHELL_PUTS;
vsnprintf(__shell_shm+1, SHELL_SHM_MAX, format, ap);
va_end(ap);
__SHELL_WAIT();
}
/programs/develop/ktcc/trunk/lib/libshell/shell_putc.c
0,0 → 1,9
#include <shell_api.h>
 
void shell_putc(char c)
{
__shell_init();
*__shell_shm = SHELL_PUTC;
*(__shell_shm+1) = c;
__SHELL_WAIT();
}
/programs/develop/ktcc/trunk/lib/libshell/shell_puts.c
0,0 → 1,10
#include <shell_api.h>
#include <string.h>
 
void shell_puts(const char *str)
{
__shell_init();
*__shell_shm = SHELL_PUTS;
strcpy(__shell_shm+1, str);
__SHELL_WAIT();
}
/programs/develop/ktcc/trunk/libc.obj/include/shell_api.h
0,0 → 1,37
#ifndef _SHELL_API_H_
#define _SHELL_API_H_
 
#include <sys/ksys.h>
 
#define SHELL_OK 0
#define SHELL_EXIT 1
#define SHELL_PUTC 2
#define SHELL_PUTS 3
#define SHELL_GETC 4
#define SHELL_GETS 5
#define SHELL_CLS 6
#define SHELL_PID 7
#define SHELL_PING 8
 
#define SHELL_SHM_MAX 1024*16
 
extern char __shell_shm_name[32];
extern char *__shell_shm;
extern int __shell_is_init;
extern void __shell_init();
 
#define __SHELL_WAIT() while (*__shell_shm) _ksys_delay(5)
 
extern int shell_ping();
extern unsigned shell_get_pid();
extern void shell_exit();
 
extern char shell_getc();
extern void shell_gets(char *str, int n);
 
extern void shell_putc(char c);
extern void shell_puts(const char *str);
extern void shell_printf(const char *format,...);
 
extern void shell_cls();
#endif
/programs/develop/ktcc/trunk/libc.obj/samples/Makefile
1,4 → 1,3
 
KTCC=kos32-tcc
FASM= fasm
KPACK = kpack
22,9 → 21,10
clayer/msgbox.kex \
clayer/boxlib.kex \
thread_work.kex \
sdltest.kex
sdltest.kex \
shell_test.kex
 
LIBS= -lSDL -ltcc -lsound -ldialog -lrasterworks -limg -lbox -lmsgbox -lnetwork -lc.obj
LIBS= -lSDL -lshell -ltcc -lsound -ldialog -lrasterworks -limg -lbox -lmsgbox -lnetwork -lc.obj
 
all: $(BIN)
/programs/develop/ktcc/trunk/libc.obj/samples/build_all.sh
18,3 → 18,4
/kolibrios/develop/tcc/tcc clayer/rasterworks.c -o /tmp0/1/tcc_samples/rasterworks -ltcc -lrasterworks -lc.obj
/kolibrios/develop/tcc/tcc thread_work.c -o /tmp0/1/tcc_samples/thread_work -ltcc -lc.obj
/kolibrios/develop/tcc/tcc -I/kolibrios/develop/tcc/include/SDL sdltest.c -o /tmp0/1/tcc_samples/sdltest -lSDL -lsound -ltcc -lc.obj
/kolibrios/develop/tcc/tcc shell_test.c -o /tmp0/1/tcc_samples/shell_test -lshell -ltcc -lc.obj
/programs/develop/ktcc/trunk/libc.obj/samples/shell_test.c
0,0 → 1,20
#include "../include/shell_api.h"
 
char string[256];
 
int main(){
shell_cls();
shell_printf("SHELL PID=%d\n\r", shell_get_pid());
shell_puts("This is a test console application for Shell\n\r");
shell_puts("Type a string (255 symbols max): ");
 
shell_gets(string, 255);
shell_printf("You typed: %s\n\r", string);
shell_puts("Press any key: ");
string[0] = shell_getc();
shell_printf("\n\rYou pressed: %c", string[0]);
shell_exit();
return 0;
}