diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 4b30ff134f0454715271782c9263fe18c9657531..b4a8dc93e1130745870722c1c429c4f966cfeb8d 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -10,9 +10,11 @@ </component> <component name="ChangeListManager"> <list default="true" id="8239070f-6583-4d64-a292-d827a40a35ed" name="Default" comment=""> + <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/built_in.c" beforeDir="false" afterPath="$PROJECT_DIR$/src/built_in.c" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/commands.c" beforeDir="false" afterPath="$PROJECT_DIR$/src/commands.c" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/utils.c" beforeDir="false" afterPath="$PROJECT_DIR$/src/utils.c" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main.c" beforeDir="false" afterPath="$PROJECT_DIR$/src/main.c" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/signal_handlers.c" beforeDir="false" afterPath="$PROJECT_DIR$/src/signal_handlers.c" afterDir="false" /> </list> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="TRACKING_ENABLED" value="true" /> @@ -22,59 +24,37 @@ <option name="LAST_RESOLUTION" value="IGNORE" /> </component> <component name="FileEditorManager"> - <splitter split-orientation="horizontal" split-proportion="0.53512233"> + <splitter split-orientation="horizontal" split-proportion="0.5676721"> <split-first> - <leaf> - <file leaf-file-name="built_in.c" pinned="false" current-in-tab="true"> + <leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> + <file leaf-file-name="built_in.c" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/src/built_in.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="153"> - <caret line="76" column="25" lean-forward="true" selection-start-line="76" selection-start-column="25" selection-end-line="76" selection-end-column="25" /> + <state relative-caret-position="-459"> + <caret line="41" column="20" selection-start-line="41" selection-start-column="20" selection-end-line="41" selection-end-column="20" /> </state> </provider> </entry> </file> <file leaf-file-name="built_in.h" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/include/built_in.h"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="-684" /> - </provider> - </entry> - </file> - <file leaf-file-name="commands.h" pinned="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/include/commands.h"> - <provider selected="true" editor-type-id="text-editor" /> - </entry> - </file> - <file leaf-file-name="signal_handlers.h" pinned="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/include/signal_handlers.h"> - <provider selected="true" editor-type-id="text-editor" /> - </entry> - </file> - <file leaf-file-name="utils.h" pinned="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/include/utils.h"> <provider selected="true" editor-type-id="text-editor" /> </entry> </file> - <file leaf-file-name="main.c" pinned="false" current-in-tab="false"> + <file leaf-file-name="main.c" pinned="false" current-in-tab="true"> <entry file="file://$PROJECT_DIR$/src/main.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="95"> - <caret line="14" selection-start-line="14" selection-end-line="14" /> + <state relative-caret-position="266"> + <caret line="14" column="31" selection-start-line="14" selection-start-column="31" selection-end-line="14" selection-end-column="31" /> </state> </provider> </entry> </file> - <file leaf-file-name="signal_handlers.c" pinned="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/src/signal_handlers.c"> - <provider selected="true" editor-type-id="text-editor" /> - </entry> - </file> <file leaf-file-name="utils.c" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/src/utils.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="95"> - <caret line="17" lean-forward="true" selection-start-line="17" selection-end-line="17" /> + <state relative-caret-position="225"> + <caret line="17" selection-start-line="17" selection-end-line="17" /> </state> </provider> </entry> @@ -82,21 +62,30 @@ </leaf> </split-first> <split-second> - <leaf> + <leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> <file leaf-file-name="utils.c" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/src/utils.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="342"> - <caret line="27" column="1" lean-forward="true" selection-start-line="27" selection-start-column="1" selection-end-line="27" selection-end-column="1" /> + <state relative-caret-position="330"> + <caret line="41" selection-start-line="41" selection-end-line="41" /> </state> </provider> </entry> </file> - <file leaf-file-name="commands.c" pinned="false" current-in-tab="true"> + <file leaf-file-name="commands.c" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/src/commands.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="57"> - <caret line="69" column="63" lean-forward="true" selection-start-line="69" selection-start-column="63" selection-end-line="69" selection-end-column="63" /> + <state relative-caret-position="496"> + <caret line="91" selection-start-line="91" selection-end-line="91" /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="signal_handlers.c" pinned="false" current-in-tab="true"> + <entry file="file://$PROJECT_DIR$/src/signal_handlers.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="95"> + <caret line="5" column="21" selection-start-line="5" selection-start-column="21" selection-end-line="5" selection-end-column="21" /> </state> </provider> </entry> @@ -118,10 +107,11 @@ <component name="IdeDocumentHistory"> <option name="CHANGED_PATHS"> <list> - <option value="$PROJECT_DIR$/src/main.c" /> + <option value="$PROJECT_DIR$/src/built_in.c" /> <option value="$PROJECT_DIR$/src/utils.c" /> <option value="$PROJECT_DIR$/src/commands.c" /> - <option value="$PROJECT_DIR$/src/built_in.c" /> + <option value="$PROJECT_DIR$/src/main.c" /> + <option value="$PROJECT_DIR$/src/signal_handlers.c" /> </list> </option> </component> @@ -135,10 +125,10 @@ <packageJsonPaths /> </component> <component name="OCFindUsagesOptions" text="true" ivars="false" properties="true" derivedClasses="false" /> - <component name="ProjectFrameBounds" extendedState="6"> - <option name="x" value="427" /> - <option name="width" value="1500" /> - <option name="height" value="1089" /> + <component name="ProjectFrameBounds"> + <option name="x" value="70" /> + <option name="width" value="1878" /> + <option name="height" value="1448" /> </component> <component name="ProjectView"> <navigator proportions="" version="1"> @@ -176,7 +166,7 @@ </component> <component name="PropertiesComponent"> <property name="WebServerToolWindowFactoryState" value="false" /> - <property name="last_opened_file_path" value="$PROJECT_DIR$" /> + <property name="last_opened_file_path" value="$PROJECT_DIR$/../workspace/shell" /> </component> <component name="RunDashboard"> <option name="ruleStates"> @@ -201,33 +191,34 @@ <option name="presentableId" value="Default" /> <updated>1525613937527</updated> <workItem from="1525613939581" duration="14984000" /> + <workItem from="1525845591506" duration="9150000" /> </task> <servers /> </component> <component name="TimeTrackingManager"> - <option name="totallyTimeSpent" value="14984000" /> + <option name="totallyTimeSpent" value="24134000" /> </component> <component name="ToolWindowManager"> - <frame x="55" y="-7" width="1488" height="878" extended-state="6" /> + <frame x="56" y="0" width="1502" height="1158" extended-state="0" /> <editor active="true" /> <layout> - <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.13704206" /> + <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.13104838" /> <window_info anchor="bottom" id="TODO" order="6" /> - <window_info anchor="bottom" id="Messages" /> - <window_info anchor="bottom" id="Event Log" side_tool="true" /> + <window_info anchor="bottom" id="Event Log" order="7" side_tool="true" /> <window_info anchor="bottom" id="Run" order="2" /> - <window_info anchor="bottom" id="Version Control" /> + <window_info anchor="bottom" id="Version Control" order="7" /> <window_info id="Structure" order="1" side_tool="true" weight="0.25" /> - <window_info anchor="bottom" id="Terminal" visible="true" weight="0.16361256" /> + <window_info active="true" anchor="bottom" id="Terminal" order="7" visible="true" weight="0.30938697" /> <window_info anchor="bottom" id="Debug" order="3" weight="0.4" /> - <window_info id="Favorites" side_tool="true" /> - <window_info anchor="bottom" id="Find" order="1" /> - <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" /> - <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" /> + <window_info id="Favorites" order="2" side_tool="true" /> <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" /> + <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" /> + <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" /> <window_info anchor="right" id="Ant Build" order="1" weight="0.25" /> + <window_info anchor="bottom" id="Find" order="1" /> <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" /> <window_info anchor="bottom" id="Message" order="0" /> + <window_info anchor="bottom" id="Messages" order="7" /> </layout> </component> <component name="TypeScriptGeneratedFilesManager"> @@ -237,48 +228,72 @@ <option name="myLimit" value="2678400000" /> </component> <component name="editorHistoryManager"> - <entry file="file://$PROJECT_DIR$/include/built_in.h"> + <entry file="file://$PROJECT_DIR$/src/built_in.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="-684" /> + <state relative-caret-position="1444"> + <caret line="76" column="25" lean-forward="true" selection-start-line="76" selection-start-column="25" selection-end-line="76" selection-end-column="25" /> + </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/include/commands.h"> - <provider selected="true" editor-type-id="text-editor" /> - </entry> - <entry file="file://$PROJECT_DIR$/include/signal_handlers.h"> - <provider selected="true" editor-type-id="text-editor" /> - </entry> - <entry file="file://$PROJECT_DIR$/include/utils.h"> + <entry file="file://$PROJECT_DIR$/include/built_in.h"> <provider selected="true" editor-type-id="text-editor" /> </entry> <entry file="file://$PROJECT_DIR$/src/main.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="95"> + <state relative-caret-position="266"> <caret line="14" selection-start-line="14" selection-end-line="14" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/src/signal_handlers.c"> - <provider selected="true" editor-type-id="text-editor" /> + <entry file="file://$PROJECT_DIR$/src/utils.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="513"> + <caret line="27" column="1" lean-forward="true" selection-start-line="27" selection-start-column="1" selection-end-line="27" selection-end-column="1" /> + </state> + </provider> </entry> <entry file="file://$PROJECT_DIR$/src/commands.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="57"> + <state relative-caret-position="1311"> <caret line="69" column="63" lean-forward="true" selection-start-line="69" selection-start-column="63" selection-end-line="69" selection-end-column="63" /> </state> </provider> </entry> + <entry file="file://$PROJECT_DIR$/include/built_in.h"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> <entry file="file://$PROJECT_DIR$/src/utils.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="95"> - <caret line="17" lean-forward="true" selection-start-line="17" selection-end-line="17" /> + <state relative-caret-position="330"> + <caret line="41" selection-start-line="41" selection-end-line="41" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/src/built_in.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="153"> - <caret line="76" column="25" lean-forward="true" selection-start-line="76" selection-start-column="25" selection-end-line="76" selection-end-column="25" /> + <state relative-caret-position="-459"> + <caret line="41" column="20" selection-start-line="41" selection-start-column="20" selection-end-line="41" selection-end-column="20" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/commands.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="496"> + <caret line="91" selection-start-line="91" selection-end-line="91" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="266"> + <caret line="14" column="31" selection-start-line="14" selection-start-column="31" selection-end-line="14" selection-end-column="31" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/signal_handlers.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="95"> + <caret line="5" column="21" selection-start-line="5" selection-start-column="21" selection-end-line="5" selection-end-column="21" /> </state> </provider> </entry> diff --git a/src/built_in.c b/src/built_in.c index 3e02de7b2fcd2fa5c853bf0a87dcbc6c570fcd45..0c55a9a73d52b6636061ee82547c879f324e1537 100644 --- a/src/built_in.c +++ b/src/built_in.c @@ -37,6 +37,9 @@ int do_fg(int argc, char** argv) { if (!validate_fg_argv(argc, argv)) return -1; + int pid; + pid = getpid(); + printf("%d running\n", pid); // TODO: Fill this. return 0; diff --git a/src/commands.c b/src/commands.c index 6a87091266c16e1952b0fa54b72d95bd7a5aacf3..5d4ad560e447e3e89c26d35a5e22730c8a5319b2 100644 --- a/src/commands.c +++ b/src/commands.c @@ -36,6 +36,7 @@ int evaluate_command(int n_commands, struct single_command (*commands)[512]) assert(com->argc != 0); int built_in_pos = is_built_in_command(com->argv[0]); + if (built_in_pos != -1) { if (built_in_commands[built_in_pos].command_validate(com->argc, com->argv)) { if (built_in_commands[built_in_pos].command_do(com->argc, com->argv) != 0) { diff --git a/src/main.c b/src/main.c index 196ccfd94b978c8d9647ca3ca3c2ec3ab06d1fcf..961a5dc957cdb82cca5234347fbd80a5c556e5fb 100644 --- a/src/main.c +++ b/src/main.c @@ -1,15 +1,19 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> - +#include <signal.h> #include "commands.h" #include "built_in.h" #include "utils.h" +#include "signal_handlers.h" int main() { char buf[8096]; + signal(SIGINT, catch_sigint); + signal(SIGTSTP, catch_sigtstp); + while (1) { fgets(buf, 8096, stdin); diff --git a/src/signal_handlers.c b/src/signal_handlers.c index fbc6c931771559aff1144c71563fc638afaf7791..e1684c30f69c31c1ae3e0c47666896dd61bec247 100644 --- a/src/signal_handlers.c +++ b/src/signal_handlers.c @@ -1,11 +1,14 @@ #include "signal_handlers.h" +#include <signal.h> void catch_sigint(int signalNo) { // TODO: File this! + signal(SIGINT, SIG_IGN); } void catch_sigtstp(int signalNo) { // TODO: File this! + signal(SIGTSTP, SIG_IGN); }