{"id":19155785,"url":"https://github.com/thedhruvrawat/np-assignment-1","last_synced_at":"2026-05-15T08:32:51.430Z","repository":{"id":132574888,"uuid":"584115133","full_name":"thedhruvrawat/np-assignment-1","owner":"thedhruvrawat","description":"Assignment 1 of course IS F462: Network Programming in BITS Pilani, Pilani Campus (Fall '22)","archived":false,"fork":false,"pushed_at":"2023-01-04T09:04:34.000Z","size":1149,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-03T19:46:26.818Z","etag":null,"topics":["c","chat-server","shell"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thedhruvrawat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-01T12:38:57.000Z","updated_at":"2023-01-25T13:35:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"8f6a9369-8b39-49ec-b50e-17abbd5e8414","html_url":"https://github.com/thedhruvrawat/np-assignment-1","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thedhruvrawat%2Fnp-assignment-1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thedhruvrawat%2Fnp-assignment-1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thedhruvrawat%2Fnp-assignment-1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thedhruvrawat%2Fnp-assignment-1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thedhruvrawat","download_url":"https://codeload.github.com/thedhruvrawat/np-assignment-1/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240241799,"owners_count":19770463,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","chat-server","shell"],"created_at":"2024-11-09T08:32:01.981Z","updated_at":"2025-10-18T20:26:55.632Z","avatar_url":"https://github.com/thedhruvrawat.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IS F462: Network Programming Assignment 1\n\n### Team Members: \n- [Anirudh Singh](https://github.com/anirudhs001) (2019A7PS0107P) \n- [Dhruv Rawat](https://github.com/thedhruvrawat) (2019B3A70537P)\n\n## P1\nImplement a command-line interpreter or shell. The shell takes in a command from user at its prompt and executes it and then prompts for more input from user. \n\n### Features\n1. Shell should execute a command using `fork()` and `execve()` calls. It should not use temporary files, `popen()`,  or  `system()` calls.  It  should  not  use  `sh`  or  `bash`  shells  to  execute  a  command.  Once  the command is completed it should print its `pid` and `status`. \n2. Shell should support \u003c, \u003e, and \u003e\u003e redirection operators. \n3. Shell should support pipelining any number of commands. E.g.: `ls|wc|wc` or `cat x|grep pat|uniq|sort` \n4. Shell should support two new pipeline operators \"||\" and \"|||\". E.g.:  `ls -l || grep ^-, grep ^d`. It means  that output of `ls  -l`  command  is  passed  as  input  to  two  other  commands.  Similarly  \"|||\"  means, output of one command is passed as input to three other commands separated by \",\".  \n5. Implement  any  other  important  feature  not  covered  in  1  to  4 and  available  in  contemporary shells. \n\nWrite a program called `shell.c` that implements the above requirements. \n\n### Deliverables: \n- shell.c \n- `pdf` explaining the design features for 1 to 4 and features selected for 5\n\n## P2\nConsider the requirement for a chat server which enables multiple users to send messages to each  other.  The  communication  between  server  and  clients  will  be  through  TCP  sockets.  Server  should  use message queues for IPC. It should not use temporary files or database to store data. Server can be tested using `telnet` command. \n\n### Features\n1. A user should be able to join or leave the chat system. \n2. A user should be able to get the list of users with the status (whether online or not). \n3. A user should be able to send messages to any or all either online or offline. \n4. Server  should  create  a  new  process  for  every  client  connection  and  use  message  queues  for communicating among the children processes. \n5. Implement any other important feature not covered in 1 to 4 but available in chat apps\n\nWrite a program called `chat.c` that implements the above requirements. \n\n### Deliverables: \n- chat.c \n- `pdf` explaining the design features for 1 to 4 and feature selected for 5 ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthedhruvrawat%2Fnp-assignment-1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthedhruvrawat%2Fnp-assignment-1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthedhruvrawat%2Fnp-assignment-1/lists"}