diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 511d383d5849e8ba63ef0d6a270ad4b55da89a27..40d623844e8de3c10fdce23561dcce8ecdbbd3c5 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -10,7 +10,8 @@ </component> <component name="ChangeListManager"> <list default="true" id="8239070f-6583-4d64-a292-d827a40a35ed" name="Default" comment=""> - <change beforePath="$PROJECT_DIR$/src/utils.c" beforeDir="false" afterPath="$PROJECT_DIR$/src/utils.c" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/commands.c" beforeDir="false" afterPath="$PROJECT_DIR$/src/commands.c" afterDir="false" /> </list> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="TRACKING_ENABLED" value="true" /> @@ -20,81 +21,63 @@ <option name="LAST_RESOLUTION" value="IGNORE" /> </component> <component name="FileEditorManager"> - <splitter split-orientation="horizontal" split-proportion="0.20726992"> - <split-first> - <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="-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" /> - </entry> - </file> - <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="152"> - <caret line="8" lean-forward="true" selection-start-line="8" selection-end-line="8" /> - </state> - </provider> - </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="225"> - <caret line="17" selection-start-line="17" selection-end-line="17" /> - </state> - </provider> - </entry> - </file> - </leaf> - </split-first> - <split-second> - <leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> - <file leaf-file-name="utils.c" pinned="false" current-in-tab="true"> - <entry file="file://$PROJECT_DIR$/src/utils.c"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="500"> - <caret line="57" column="5" selection-start-line="57" selection-start-column="5" selection-end-line="57" selection-end-column="5" /> - </state> - </provider> - </entry> - </file> - <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="1294"> - <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="false"> - <entry file="file://$PROJECT_DIR$/src/signal_handlers.c"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="228"> - <caret line="12" column="21" selection-start-line="12" selection-start-column="21" selection-end-line="12" selection-end-column="21" /> - </state> - </provider> - </entry> - </file> - </leaf> - </split-second> - </splitter> + <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="-314"> + <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="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="266"> + <caret line="14" column="14" selection-start-line="14" selection-start-column="14" selection-end-line="14" selection-end-column="14" /> + </state> + </provider> + </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="465"> + <caret line="46" column="7" selection-start-line="46" selection-start-column="7" selection-end-line="46" selection-end-column="7" /> + </state> + </provider> + </entry> + </file> + <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="-152"> + <caret line="37" column="1" lean-forward="true" selection-start-line="37" selection-start-column="1" selection-end-line="37" selection-end-column="1" /> + </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"> + <state relative-caret-position="228"> + <caret line="12" column="21" selection-start-line="12" selection-start-column="21" selection-end-line="12" selection-end-column="21" /> + </state> + </provider> + </entry> + </file> + </leaf> </component> <component name="FindInProjectRecents"> <findStrings> <find>single_command</find> <find>execvp</find> <find>print</find> + <find>~</find> + <find>n_commands</find> + <find>free_commands</find> + <find>evaluate_command</find> </findStrings> </component> <component name="Git.Settings"> @@ -104,10 +87,10 @@ <option name="CHANGED_PATHS"> <list> <option value="$PROJECT_DIR$/src/built_in.c" /> - <option value="$PROJECT_DIR$/src/commands.c" /> <option value="$PROJECT_DIR$/src/main.c" /> <option value="$PROJECT_DIR$/src/signal_handlers.c" /> <option value="$PROJECT_DIR$/src/utils.c" /> + <option value="$PROJECT_DIR$/src/commands.c" /> </list> </option> </component> @@ -121,9 +104,9 @@ <packageJsonPaths /> </component> <component name="OCFindUsagesOptions" text="true" ivars="false" properties="true" derivedClasses="false" /> - <component name="ProjectFrameBounds"> - <option name="x" value="70" /> - <option name="width" value="1878" /> + <component name="ProjectFrameBounds" extendedState="1"> + <option name="x" value="1751" /> + <option name="width" value="1698" /> <option name="height" value="1448" /> </component> <component name="ProjectView"> @@ -131,7 +114,6 @@ <foldersAlwaysOnTop value="true" /> </navigator> <panes> - <pane id="Scope" /> <pane id="ProjectPane"> <subPane> <expand> @@ -158,11 +140,12 @@ <select /> </subPane> </pane> + <pane id="Scope" /> </panes> </component> <component name="PropertiesComponent"> <property name="WebServerToolWindowFactoryState" value="false" /> - <property name="last_opened_file_path" value="$PROJECT_DIR$/../workspace/shell" /> + <property name="last_opened_file_path" value="$PROJECT_DIR$/../workspace/dong/mysh-1" /> </component> <component name="RunDashboard"> <option name="ruleStates"> @@ -187,34 +170,39 @@ <option name="presentableId" value="Default" /> <updated>1525613937527</updated> <workItem from="1525613939581" duration="14984000" /> - <workItem from="1525845591506" duration="9784000" /> + <workItem from="1525845591506" duration="12797000" /> + <workItem from="1525873924134" duration="1369000" /> + <workItem from="1526030788833" duration="82000" /> + <workItem from="1526030882114" duration="6000" /> + <workItem from="1526031239879" duration="642000" /> + <workItem from="1526032501602" duration="4775000" /> </task> <servers /> </component> <component name="TimeTrackingManager"> - <option name="totallyTimeSpent" value="24768000" /> + <option name="totallyTimeSpent" value="34655000" /> </component> <component name="ToolWindowManager"> - <frame x="56" y="0" width="1502" height="1158" extended-state="0" /> + <frame x="1401" y="0" width="1358" height="1158" extended-state="0" /> <editor active="true" /> <layout> - <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.13104838" /> + <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.14508928" /> <window_info anchor="bottom" id="TODO" order="6" /> - <window_info anchor="bottom" id="Event Log" order="7" side_tool="true" /> + <window_info anchor="bottom" id="Event Log" order="10" side_tool="true" /> + <window_info anchor="bottom" id="Version Control" order="8" /> <window_info anchor="bottom" id="Run" order="2" /> - <window_info anchor="bottom" id="Version Control" order="7" /> <window_info id="Structure" order="1" side_tool="true" weight="0.25" /> - <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 anchor="bottom" id="Terminal" order="7" visible="true" weight="0.20689656" /> <window_info id="Favorites" order="2" side_tool="true" /> + <window_info anchor="bottom" id="Debug" order="3" weight="0.4" /> <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="Messages" order="9" /> <window_info anchor="bottom" id="Message" order="0" /> - <window_info anchor="bottom" id="Messages" order="7" /> + <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" /> + <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" /> + <window_info anchor="bottom" id="Find" order="1" /> </layout> </component> <component name="TypeScriptGeneratedFilesManager"> @@ -226,41 +214,147 @@ <component name="editorHistoryManager"> <entry file="file://$PROJECT_DIR$/src/built_in.c"> <provider selected="true" editor-type-id="text-editor"> - <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 relative-caret-position="779"> + <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$/include/built_in.h"> - <provider selected="true" editor-type-id="text-editor" /> + <entry file="file://$PROJECT_DIR$/src/main.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="247"> + <caret line="13" column="17" lean-forward="true" selection-start-line="13" selection-start-column="17" selection-end-line="16" selection-end-column="13" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/utils.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="760"> + <caret line="40" column="15" selection-start-line="40" selection-start-column="15" selection-end-line="40" selection-end-column="15" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/signal_handlers.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="228"> + <caret line="12" column="21" selection-start-line="12" selection-start-column="21" selection-end-line="12" selection-end-column="21" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/commands.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="969"> + <caret line="51" column="15" lean-forward="true" selection-start-line="51" selection-start-column="15" selection-end-line="51" selection-end-column="15" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/built_in.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="779"> + <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/main.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="266"> - <caret line="14" selection-start-line="14" selection-end-line="14" /> + <state relative-caret-position="152"> + <caret line="8" selection-start-line="8" selection-end-line="8" /> </state> </provider> </entry> <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 relative-caret-position="760"> + <caret line="40" column="15" selection-start-line="40" selection-start-column="15" selection-end-line="40" selection-end-column="15" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/signal_handlers.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="228"> + <caret line="12" column="21" selection-start-line="12" selection-start-column="21" selection-end-line="12" selection-end-column="21" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/src/commands.c"> <provider selected="true" editor-type-id="text-editor"> - <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 relative-caret-position="988"> + <caret line="52" column="6" selection-start-line="52" selection-start-column="6" selection-end-line="52" selection-end-column="6" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/built_in.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="779"> + <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/main.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="152"> + <caret line="8" selection-start-line="8" selection-end-line="8" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/utils.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="760"> + <caret line="40" column="15" selection-start-line="40" selection-start-column="15" selection-end-line="40" selection-end-column="15" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/signal_handlers.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="228"> + <caret line="12" column="21" selection-start-line="12" selection-start-column="21" selection-end-line="12" selection-end-column="21" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/commands.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="988"> + <caret line="52" column="6" selection-start-line="52" selection-start-column="6" selection-end-line="52" selection-end-column="6" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/include/built_in.h"> - <provider selected="true" editor-type-id="text-editor" /> + <entry file="file://$PROJECT_DIR$/src/built_in.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="779"> + <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/main.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="152"> + <caret line="8" selection-start-line="8" selection-end-line="8" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/utils.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="760"> + <caret line="40" column="15" selection-start-line="40" selection-start-column="15" selection-end-line="40" selection-end-column="15" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/signal_handlers.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="228"> + <caret line="12" column="21" selection-start-line="12" selection-start-column="21" selection-end-line="12" selection-end-column="21" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/commands.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="988"> + <caret line="52" column="6" selection-start-line="52" selection-start-column="6" selection-end-line="52" selection-end-column="6" /> + </state> + </provider> </entry> <entry file="file://$PROJECT_DIR$/src/built_in.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="-459"> + <state relative-caret-position="779"> <caret line="41" column="20" selection-start-line="41" selection-start-column="20" selection-end-line="41" selection-end-column="20" /> </state> </provider> @@ -272,6 +366,13 @@ </state> </provider> </entry> + <entry file="file://$PROJECT_DIR$/src/utils.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="760"> + <caret line="40" column="15" lean-forward="true" selection-start-line="40" selection-start-column="15" selection-end-line="40" selection-end-column="15" /> + </state> + </provider> + </entry> <entry file="file://$PROJECT_DIR$/src/signal_handlers.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="228"> @@ -281,15 +382,71 @@ </entry> <entry file="file://$PROJECT_DIR$/src/commands.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="1294"> - <caret line="91" selection-start-line="91" selection-end-line="91" /> + <state relative-caret-position="988"> + <caret line="52" column="6" selection-start-line="52" selection-start-column="6" selection-end-line="52" selection-end-column="6" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/built_in.c"> + <provider selected="true" editor-type-id="text-editor"> + <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$/src/main.c"> + <provider selected="true" editor-type-id="text-editor"> + <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/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="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$/src/built_in.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-314"> + <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="-152"> + <caret line="37" column="1" lean-forward="true" selection-start-line="37" selection-start-column="1" selection-end-line="37" selection-end-column="1" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/src/utils.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="500"> - <caret line="57" column="5" selection-start-line="57" selection-start-column="5" selection-end-line="57" selection-end-column="5" /> + <state relative-caret-position="465"> + <caret line="46" column="7" selection-start-line="46" selection-start-column="7" selection-end-line="46" selection-end-column="7" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/signal_handlers.c"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="228"> + <caret line="12" column="21" selection-start-line="12" selection-start-column="21" selection-end-line="12" selection-end-column="21" /> + </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="14" selection-start-line="14" selection-start-column="14" selection-end-line="14" selection-end-column="14" /> </state> </provider> </entry> diff --git a/201221030.docx b/201221030.docx new file mode 100644 index 0000000000000000000000000000000000000000..282cbaf74b7849b2a05145d39086fda6d96898ab Binary files /dev/null and b/201221030.docx differ diff --git a/src/commands.c b/src/commands.c index 5d4ad560e447e3e89c26d35a5e22730c8a5319b2..cfa2891bf7688023f4f38af8ed90e02f447a4a26 100644 --- a/src/commands.c +++ b/src/commands.c @@ -28,7 +28,15 @@ static int is_built_in_command(const char* command_name) /* * Description: Currently this function only handles single built_in commands. You should modify this structure to launch process and offer pipeline functionality. */ -int evaluate_command(int n_commands, struct single_command (*commands)[512]) +int evaluate_command(int n_commands, struct single_command (*commands)[512]) { + if (n_commands == 1) { + struct single_command *com = (*commands); + one_command(n_commands, com); + } else if (n_commands > 1){ + printf("pipe"); + } +} +int one_command(int n_commands, struct single_command (*commands)[512]) { if (n_commands > 0) { struct single_command* com = (*commands); @@ -53,6 +61,7 @@ int evaluate_command(int n_commands, struct single_command (*commands)[512]) } else if (validate_path(com->argc, com->argv)) { int pid; + pid = fork(); if (pid == -1) { @@ -76,6 +85,8 @@ int evaluate_command(int n_commands, struct single_command (*commands)[512]) return 0; } + + void free_commands(int n_commands, struct single_command (*commands)[512]) { for (int i = 0; i < n_commands; ++i) {