Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 0 additions & 40 deletions Makefile

This file was deleted.

8 changes: 0 additions & 8 deletions basename/Makefile

This file was deleted.

38 changes: 10 additions & 28 deletions basename/basename.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,51 +7,33 @@ import (
"flag"
)

var dirMode = flag.Bool("d", false, "Print directory component")
var dflag = flag.Bool("d", false, "Print directory component")

func usage() {
fmt.Fprintf(
os.Stderr,
"usage: basename [-d] string [suffix]\n")
fmt.Fprintln(os.Stderr, "usage: basename [-d] string [suffix]")
os.Exit(1)
}

func printDir(str string) {
index := strings.LastIndex(str, "/")

if index == -1 {
fmt.Fprintf(os.Stdout, ".\n")
} else {
if index == 0 {
fmt.Fprintf(os.Stdout, "\n")
} else {
fmt.Fprintf(os.Stdout, "%s\n", str[0:index])
}
i := strings.LastIndex(str, "/")
if i < 0 {
fmt.Println(".")
return
}
fmt.Println(str[:i])
}

func printName(str, suf string) {
index := strings.LastIndex(str, "/")
name := str[index+1:len(str)]

if len(suf) > 0 {
index2 := strings.LastIndex(name, suf)

if index2 != -1 {
name = name[0:index2]
}
}
fmt.Fprintf(os.Stdout, "%s\n", name)
i, j := strings.LastIndex(str, "/"), strings.LastIndex(str, suf)
fmt.Println(str[i+1:j])
}

func main() {
flag.Parse()

if flag.NArg() == 0 || flag.NArg() > 2 {
usage()
}

if *dirMode {
if *dflag {
printDir(flag.Arg(0))
} else {
if flag.NArg() == 2 {
Expand Down
8 changes: 0 additions & 8 deletions cal/Makefile

This file was deleted.

117 changes: 58 additions & 59 deletions cal/cal.go
Original file line number Diff line number Diff line change
@@ -1,57 +1,56 @@
package main

import (
"os"
"fmt"
"time"
"flag"
"fmt"
"os"
"strconv"
"time"
)


func parseMonth(month string) int {
func parseMonth(month string) time.Month {
switch month {
case "jan", "january":
return 1
case "feb", "february":
return 2
case "mar", "march":
return 3
case "apr", "april":
return 4
case "may":
return 5
case "jun", "june":
return 6
case "jul", "july":
return 7
case "aug", "august":
return 8
case "sep", "september":
return 9
case "oct", "october":
return 10
case "nov", "november":
return 11
case "dec", "december":
return 12
case "jan", "january":
return time.January
case "feb", "february":
return time.February
case "mar", "march":
return time.March
case "apr", "april":
return time.April
case "may":
return time.May
case "jun", "june":
return time.June
case "jul", "july":
return time.July
case "aug", "august":
return time.August
case "sep", "september":
return time.September
case "oct", "october":
return time.October
case "nov", "november":
return time.November
case "dec", "december":
return time.December
}
return 0
return time.Month(0)
}

func parseYear(year string) int64 {
var yr, er = strconv.Atoi(year)
func parseYear(year string) int {
var yr, err = strconv.ParseInt(year, 10, 32)

if er != nil {
fmt.Fprintf(os.Stderr, "cal: error parsing parameters\n")
if err != nil {
fmt.Fprintln(os.Stderr, "cal: error parsing year:", err.Error())
os.Exit(1)
}

return int64(yr)
return int(yr)
}

func januaryFirst(year int64) int {
d := 4 + year + (year + 3) / 4
func januaryFirst(year int) int {
d := 4 + year + (year+3)/4

if year > 1800 {
d -= (year - 1701) / 100
Expand All @@ -65,51 +64,51 @@ func januaryFirst(year int64) int {
return int(d % 7)
}

var nonleapyear = []int{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
var leapyear = []int{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
var (
nonleapyear = []int{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
leapyear = []int{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
)

func months(year int64) []int {
func months(year int) []int {
if year%4 == 0 && (year%100 != 0 || year%400 == 0) {
return leapyear
}
return nonleapyear
}

func printCal(month int, year int64) {
var dayw string = " Su Mo Tu We Th Fr Sa"

smon := [...]string{"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}
func printCal(month time.Month, year int) {
dayw := "Su Mo Tu We Th Fr Sa"

var s string = smon[month-1] + " " + strconv.Itoa64(year)
s := month.String() + " " + strconv.FormatInt(int64(year), 10)

var off int = (20 - len(s)) / 2
off := (20 - len(s)) / 2

for i := 0; i < off; i++ {
s = " " + s
}

s = s + "\n" + dayw + "\n"
s += "\n" + dayw + "\n"

mth := months(year)

day := januaryFirst(year)

for i := 1; i < month; i++ {
for i := 1; i < int(month); i++ {
day += mth[i-1]
}

for i := 0; i < day % 7; i++ {
for i := 0; i < day%7; i++ {
s = s + " "
}

for i := 1; i <= mth[month-1]; i++ {
s = s + " "
s = s + " "
if i < 10 {
s = s + " "
}
s = s + strconv.Itoa(i)
day += 1
if day % 7 == 0 {
if day%7 == 0 {
s = s + "\n"
}
}
Expand All @@ -122,10 +121,10 @@ func printCal(month int, year int64) {
func main() {
flag.Parse()

var local = *time.LocalTime()
local := time.Now()

var month int = 0
var year int64 = 0
var month time.Month
var year int

if flag.NArg() > 2 {
fmt.Fprintf(os.Stderr, "cal: error parsing parameters\n")
Expand All @@ -142,16 +141,16 @@ func main() {
}
} else {
if flag.NArg() == 1 {
year = local.Year
year = local.Year()
month = parseMonth(flag.Arg(0))

if month == 0 {
if month == time.Month(0) {
year = parseYear(flag.Arg(0))
month = local.Month
month = local.Month()
}
} else {
year = local.Year
month = local.Month
year = local.Year()
month = local.Month()
}
}

Expand Down
9 changes: 0 additions & 9 deletions cat/Makefile

This file was deleted.

51 changes: 10 additions & 41 deletions cat/cat.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,57 +6,26 @@
package main

import (
"os"
"flag"
"fmt"
"os"
)

func cat(f *os.File) {
const NBUF = 8192
var buf [NBUF]byte

for {
switch nr, rerr := f.Read(buf[:]); true {
case nr > 0:
var nw, werr = os.Stdout.Write(buf[0:nr])
if nw != nr {
fmt.Fprintf(
os.Stderr,
"cat: write error copying %s: %s",
f.Name(),
werr.String())
os.Exit(1)
}
case nr == 0:
return
case nr < 0:
fmt.Fprintf(
os.Stderr,
"cat: error reading %s: %s",
f.Name(),
rerr.String())
os.Exit(1)
}
}
}
const NBUF = 8192

func main() {
flag.Parse()
if flag.NArg() > 0 {
for i := 0; i < flag.NArg(); i++ {
var f, err = os.Open(flag.Arg(i), os.O_RDONLY, 0666)
if f == nil {
fmt.Fprintf(
os.Stderr,
"cat: can't open %s: %s",
flag.Arg(i),
err.String())
if flag.NArg() == 0 {
io.copy(os.Stdin, os.Stdout)
} else {
for _, v := range flag.Args() {
f, err := os.Open(v)
if err != nil {
fmt.Fprintln(os.Stderr, "cat:" err.Error())
os.Exit(1)
}
cat(f)
io.copy(f, os.Stdout)
f.Close()
}
} else {
cat(os.Stdin)
}
}
Loading